Код вашего примера:
Console.WriteLine($"0x{ptr:x}");
Эквивалент его строки. Брат формата:
Console.WriteLine(string.Format("0x{0:x}", ptr));
При применении строки формата "x"
интерполяция строки / формат строки в конечном итоге достигает эта строка кода :
IFormattable formattableArg = arg as IFormattable;
К сожалению, хотя IntPtr имеет собственный формат Метод ToString () , он не реализует IFormattable
, так что это базовый c .ToString()
метод вызывается и строка формата отбрасывается.
См. этот вопрос для получения дополнительной информации
As vasily. Sib предложил, вы можете использовать $"0x{(int)ptr:x}"
вместо.
Попробуйте мой пример .