Beachten Sie, ich bin mir nicht ganz sicher, ob diese Frage zu dieser Seite gehört, aber ich versuche, konstruktiv zu sein.
Warum ist der Code
Ausgabe
%Vor% Warum wird die hexadezimale Formatierung nicht direkt auf das IntPtr
Argument angewendet, wenn dies bei der Formatierung gewünscht wird? Gibt es Argumente gegen die Gestaltung der Funktionalität?
Wenn es keine Argumente gegen ein solches Design gibt, über welchen Kanal sollte ich dann dieses Problem an Microsoft melden?
Beachten Sie auch, dass der Debugger den IntPtr
-Wert in Hex anzeigt, wenn dies gewünscht wird.
Ich finde, dass es ziemlich intuitiv und relativ häufige Möglichkeit wäre, IntPtr
-Werte auszudrucken. Ich habe auch Code gefunden, der von anderen Leuten geschrieben wurde, die die erste Zeile benutzt haben und offensichtlich das hexadezimale Ergebnis erwartet haben, aber das Ergebnis war anders. Es hat auch einige Zeit gedauert, bis ich das Problem bemerkt habe, was das Verständnis der Protokollnachrichten erschwert hat.
Für die Methode String.Format
verwenden Sie eine Formatzeichenfolge für eine Argument muss das Argument die IFormattable
-Schnittstelle implementieren.
Da der IntPtr
-Typ IFormattable
nicht implementiert, wird String.Format
methode ruft nur die Methode "parameterless ToString
" auf, um den Wert IntPtr
in eine Zeichenfolge umzuwandeln.
Das liegt daran, dass IntPtr
im ersten Fall nicht einer der integrierten Typen ist, die mit String.Format arbeiten, ptr.ToString()
wird aufgerufen, um eine Zeichenkette zurückzugeben. Da die Formatierung erst nach der Konvertierung in eine Zeichenfolge angewendet wird, hat der X8-Formatbezeichner keine Auswirkung.