【发布时间】:2015-02-28 19:36:08
【问题描述】:
String.Format() 遇到了一个奇怪的问题。我需要用前导零格式化两个十六进制数字以填充最多 8 位数字。但是,它仅适用于第一个参数 ({0:X8})。对于第二个参数 ({1:X8}),只打印“X8”。
这是我的代码:
public struct DataDirectory
{
public uint VirtualAddress
{
get;
internal set;
}
public uint Size
{
get;
internal set;
}
public override string ToString()
{
return String.Format("{{VirtualAddress=0x{0:X8},Size=0x{1:X8}}}", VirtualAddress, Size);
}
}
调试器输出如下:
编辑:如果我删除格式字符串开头和结尾的花括号,它似乎可以工作,但是我错过了从 ToString() 返回的字符串中的那些(调试器仍然将它们添加到 QuickWatch 窗口):
return String.Format("VirtualAddress=0x{0:X8},Size=0x{1:X8}", VirtualAddress, Size);
是否可以用String.Format() 格式化两个十六进制数字?
【问题讨论】:
标签: c# string.format