c# - 令人惊讶的 int.ToString 输出

标签 c# tostring

我一直在做一个项目,发现了一个有趣的问题:

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/

相关文章:

c# - 使用类和接口(interface)定义通用对象

c# - 如何使用 NHibernate 的 QueryOver API 表达包含 WHERE..IN 子查询的查询?

c# - OWIN 和 Global.asax.cs 文件

c# - Wpf:MediaElement 暂停并再次播放禁用速度比

java - 如何打印存储在数组中的对象的实例

c# - 最有效的 Dictionary<K,V>.ToString() 格式?

java - 打印 Java 数组的最简单方法是什么?

c# - jQuery Ajax 对 Web 服务的调用似乎是同步的

ios - Swift 相当于 Java toString()

java - 如何在 Java 中使用 toString 方法将 int 数组转换为 String