我一直在做一个项目,发现了一个有趣的问题:
2.ToString("TE"+"000"); // output = TE000
2.ToString("TR"+"000"); // output = TR002
除了 "TE"
之外,我还尝试了几个字符串,但都具有相同的正确输出。
出于好奇,我想知道这怎么会发生?
最佳答案
仅基于 Microsoft 的文档,Custom Numeric Format Strings ,您的字符串“TE000”和“TR000”都是自定义格式字符串,但显然它们的解析方式不同。
2.ToString("TE000")
只是格式化程序中的一个错误;由于未转义的“E”,它走上了一条错误的道路。所以它出乎意料地假设整个事情都是文字。
2.ToString("TR000")
被解释为隐含的“TR”文字加上 3 个零填充数字作为整数值;因此,您得到“TR002”。
如果你真的想要逐字记录 TE 和 TR,表达式 2.ToString("\"TE\"000")
和 2.ToString("\"TR\"000")
将通过将 TE 和 TR 指定为显式文字来为您完成此操作,而不是让格式化程序猜测它们是否是有效的格式说明符(并弄错)。
关于c# - 令人惊讶的 int.ToString 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27336460/