請注意,我不太確定此問題屬於此網站,但我試圖建設性。
爲什麼代碼將IntPtr轉換爲字符串中的十六進制字符串。格式
IntPtr ptr = new IntPtr(1234);
Console.WriteLine(string.Format("{0:X8}", ptr));
Console.WriteLine(ptr.ToString("X8"));
Console.WriteLine(string.Format("{0:X8}", ptr.ToInt32()));
輸出
1234
000004D2
000004D2
爲什麼沒有當格式要求等等六角格式應用於IntPtr
參數直接?是否有任何已知的反對設計功能的論點 - ?
如果沒有反對這種設計的論據,那麼我應該通過哪個渠道向Microsoft報告此問題?
另請注意,如果要求調試器以十六進制顯示IntPtr
值(如果有)。
我發現這將是相當直觀和相對頻繁的方式打印出IntPtr
值。我也發現了其他使用第一行的人編寫的代碼,顯然期望十六進制結果,但實際上結果是不同的。我也花了一些時間來注意到這個問題,這使得理解日誌消息變得複雜。