【发布时间】:2012-10-31 04:27:34
【问题描述】:
注意,我不太确定这个问题是否属于这个网站,但我会尽量保持建设性。
为什么是代码
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 值是一种非常直观且相对频繁的方式。我还发现其他使用第一行的人编写的代码显然期望十六进制结果,但实际上结果不同。我也花了一些时间才注意到这个问题,这使得理解日志消息变得复杂。
【问题讨论】: