この質問がこのサイトに属しているかどうかはよくわかりませんが、建設的になるように努めています。
なぜコードは
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
フォーマットで要求されたときに、16 進フォーマットがIntPtr
引数に直接適用されないのはなぜですか? 機能をそのように設計することに対する既知の議論はありますか?
そのような設計に対する反論がない場合、この問題をマイクロソフトに報告するには、どのチャネルを使用すればよいですか?
また、要求された場合、デバッガーはIntPtr
値を 16 進数で表示することに注意してください。
これは非常に直感的で、IntPtr
値を出力する比較的頻繁な方法であることがわかりました。また、最初の行を使用して 16 進数の結果を期待していた他の人によって書かれたコードを見つけましたが、実際には結果は異なっていました。また、ログ メッセージの理解を複雑にする問題に気付くまでに時間がかかりました。