【问题标题】:.net ToString() format documentation.net ToString() 格式文档
【发布时间】:2010-10-05 23:38:31
【问题描述】:

前几天我看到一个代码 sn-p 将布尔值转换为相应的“是”/“否”值:

CDbl(True).ToString("Yes;Yes;No")

代码工作正常,但我很好奇它是如何工作的,我无法在MSDN documentation for ToString() 中找到答案。

有人能解释一下吗?

【问题讨论】:

    标签: .net vb.net


    【解决方案1】:

    Steve-X 拥有迄今为止我见过的最好的 String.Format 文档:Steve-X ToString()

    我知道您要求“ToString”,但 ToString 取决于您正在调用的实现(即 DateTime.ToString()、decimal.ToString...等)。

    如果您真的对它的工作原理感兴趣,请打开 reflector 并仔细阅读代码。

    【讨论】:

      【解决方案2】:

      正如@Joel Coehoorn 和@tvanfosson 所说,它使用的是自定义数字格式字符串。它起作用的原因是布尔值可以使用以下(基本上)转换为双精度:

      public static double ToDouble(bool value)
      {
          return (value ? ((double) 1) : ((double) 0));
      }
      

      因此,如果 value 为 true,则返回 1,如果 value 为 false,则返回 0。此时,应用部分映射规则,如 @tvanfosson(以及随后的 @Joel Coehoorn)所述。

      【讨论】:

        【解决方案3】:

        它将其视为Custom Numeric Format String。具体请参见链接页面中关于部分分隔符的部分:

        ';'字符用于分隔格式字符串中正数、负数和零数的部分。如果自定义格式字符串中有两个部分,最左边的部分定义正数和零数的格式,而最右边的部分定义负数的格式。 如果有三个部分,最左边的部分定义正数的格式,中间的部分定义负数的格式,最右边的部分定义零数的格式。

        【讨论】:

          【解决方案4】:

          它使用自定义数字格式字符串中的文字格式字符串。您可以提供映射到正数、负数或零数的数字的文字。第一个“是”映射为正,第二个映射为负,“否”映射为零。因此,任何非零都是肯定的,只有零是否定的。这相当于对数值的标准真/假语义解释。

          查看Custom Numeric Format 字符串页面的“部分分隔符”。

          【讨论】:

            【解决方案5】:

            查看herehere,获取官方文档。 还有来自 Jhon Sheehan 博客的这个伟大的 cheatsheet

            【讨论】:

            • 更具体地说,来自提到的备忘单:“; 部分分隔符 ';'字符用于分隔格式字符串中正数、负数和零数的部分。"
            • Jhon Sheehan 的备忘单就是钱!
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-12-12
            • 2010-10-01
            • 1970-01-01
            • 2013-04-19
            • 1970-01-01
            • 1970-01-01
            • 2014-03-29
            相关资源
            最近更新 更多