冰楓論壇

標題: 關於C# 一些程式碼問題[已解決] [打印本頁]

作者: diadorapolo    時間: 2017-8-27 14:22
標題: 關於C# 一些程式碼問題[已解決]
本帖最後由 diadorapolo 於 2017-8-27 16:54 編輯

if (HandleList.Count > 0)
            {
                foreach (var HandleInformation in HandleList)
                {
                    Process procService = Process.GetProcessById(HandleInformation.Id);

                    Console.WriteLine($"{procService.ProcessName} - {HandleInformation.hProcess.ToString("x2")}");

                    if (ElevateHandle(procService.Handle, HandleInformation.hProcess, true, true))
                    {
                        IntPtr hProcess = StartProcessAsUser(null, "{szCheatPath} {HandleInformation.hProcess}", null, true, procService.Handle);
                        ElevateHandle(procService.Handle, HandleInformation.hProcess, false, false);
                        break;
                 }
        }
}

以上的程式碼 我編譯時出了錯誤:未預期字元$ ,還有那個ToString裡的x2 ,想請問是本身程式碼可以用$ 只是我少東西 還是本來就沒有$字元??!

作者: TED    時間: 2017-8-27 15:36
Console.WriteLine($"{procService.ProcessName} - {HandleInformation.hProcess.ToString("x2")}");
這句只是寫 Console 顯示輸出,註解掉也不會有什麼影響

HandleInformation.hProcess.ToString("x2") 是 HandleInformation.hProcess.ToString("X2") 使用十六進位

$""  是 字串內插 (String Interpolation) 寫法,在 IDE Visual Studio 2015 以上才能這樣寫

字串內插可以改用 string.format,這樣 Visual Studio 2013 以前就可以執行
樣子如下:
string msg = string.Format("{0} - {1:X2}", procService.ProcessName, HandleInformation.hProcess);
Console.WriteLine(msg);
作者: diadorapolo    時間: 2017-8-27 16:53
TED 發表於 2017-8-27 15:36
Console.WriteLine($"{procService.ProcessName} - {HandleInformation.hProcess.ToString("x2")}");
這句 ...

非常感謝您的回覆,謝謝你解決我的問題 !!
你有Discord? 非常想與你一起學習
作者: franklin2002    時間: 2018-2-2 11:41
以上 TED 的說明非常正確,以下補充 string 常見的幾種方法:

// string 合併
var txt1 = procService.ProcessName + " - " + HandleInformation.hProcess.ToString("x2");

// string 格式化 ( 使用 string.Format() )
var txt2 = string.Format("{0} - {1:X2}", procService.ProcessName, HandleInformation.hProcess);

// string interpolation 串插值 ( 使用 $"" for VS2015 and later )
var txt3 = $"{procService.ProcessName} - {HandleInformation.hProcess.ToString("x2")}";

使用喜好見仁見智,但漸漸很多人喜歡 string interpolation,因為直觀、描述簡潔。




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓