IntPtr in hex-string in der Zeichenkette.Format
Hinweis, ich bin nicht ganz sicher, diese Frage gehört zu dieser site, aber ich versuche konstruktiv zu sein.
Warum funktioniert der code
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()));
Ausgabe
1234
000004D2
000004D2
Warum ist nicht die hex-Formatierung für die IntPtr
argument direkt, wenn der Antrag so in der Formatierung? Gibt es irgendwelche bekannten Argumente gegen die Gestaltung, die Funktionalität so ?
Wenn es keine Argumente gegen eine solche Konstruktion dann durch welchen Kanal soll ich melden Sie dieses Problem an Microsoft?
Beachten Sie auch, dass der debugger zeigt die IntPtr
Wert in hex, falls gefordert.
Ich finde, es wäre sehr intuitiv und relativ häufige Art des Drucks aus IntPtr
Werte. Ich habe auch gefunden code geschrieben von anderen Menschen, die die erste Zeile und offensichtlich erwartet die hex-Folge, aber eigentlich war das Ergebnis anders. Es brauchte auch einige Zeit für mich zu bemerken, das Thema, das kompliziert das Verständnis der log-Meldungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die
- String.Format
Methode nutzen einen format-string für ein argument, das argument hat zur Umsetzung derIFormattable
interface.Als
IntPtr
- Typ nicht umsetzenIFormattable
, dieString.Format
Methode rufen Sie den parameterlosenToString
Methode zu drehen, dieIntPtr
Wert in eine Zeichenfolge.Ist, weil im ersten Fall, da
IntPtr
ist nicht einer von den eingebauten integralen Typen, die die Arbeit mit Strings.Formatptr.ToString()
wird aufgerufen, um einen string zurückgeben. Da die Formatierung nur nach der Umwandlung in einen string, der eine X8-Formatbezeichner hat keine Wirkung.