12

当我看到 boolean 有两个字段时,我正在阅读boolean structure的 MSDN 文章: TrueStringFalseString。它们分别返回“True”和“False”。

经过一番搜索,我能找到的唯一例子是这篇 dotnetperls 文章。文章指出:

程序经常需要这些字符串。TrueString 和 FalseString 是一对有用的只读成员。它们以字符串格式表示真值。它们提供了直接使用字符串文字的间接和抽象。

所以看起来它在某些情况下很有用。但是同一篇文章未能提供一个现实的例子(无论如何恕我直言)。

一些进一步的阅读也引起了我的注意: TrueString 和 FalseString 是public static readonly fields。这篇dornetperls文章指出:

语言规范建议使用公共静态只读字段……当该字段将来可能发生变化时。

现在这我有点明白了。如果 .NET 开发人员决定将“True”和“False”分别更改为“OkeyDokey”和“Negatory”,那么使用 TrueString 和/或 FalseString 是明智的。

但这仍然给我留下了一个问题:在哪种情况下,您希望将字符串与布尔值的字符串文字进行比较?因为从表面上看:“程序经常需要”它们。

4

3 回答 3

1

如果程序将数据存储在人类可读的文件或数据库中,它可能需要将值存储为字符串。当您读回数据时,如果您知道数据是由您的应用程序写入并使用标准字符串表示,那么您可以x == bool.TrueString比您更快地进行比较bool.TryParse(x ...)。您还可以通过确保所有值来验证数据x == bool.TrueString || x == bool.FalseString

如果数据是由人类或其他系统键入的,TryParse 是更好的选择,因为它接受更多值作为真值,并区分明确的假和无效输入。( MSDN 布尔 TryParse )

于 2018-02-12T18:49:33.717 回答
0

用简单的话来说。布尔值是一个结构。此布尔值公开 ToString() 方法,该方法表示用户可读的文本。所以如果你写一些类似的东西。

bool b = false;
b.ToString();

输出将是“False”而不是 0。“False”是人类可读的并且很容易被捕获。

还有一些您可能希望将文本值解析为布尔值的地方。所以这些也可以表示为布尔值。例如。我们用

Boolean.TryParse("false" ,out mybool)

Tryparse 方法正在设置 false 值,因为这发现我们可以从字符串工具中读取值。

于 2013-07-03T12:19:24.840 回答
0

它可以用作缺少“字符串类型”配置参数的默认值。这是我最近使用的一个具体示例:

 if (bool.Parse(ConfigurationManager.AppSettings["IsTestMode"] ?? bool.FalseString)) ...

...这 - 在我的拙见中 - 比

 var isTestModeString = ConfigurationManager.AppSettings["IsTestMode"];
 if (isTestModeString != null && bool.Parse(isTestModeString)) ...

(我故意不在TryParse这里使用,因为我不想默默地忽略无效值。如果配置值存在并且除or以外的其他内容,我希望抛出异常。)TrueFalse

于 2020-08-11T17:00:28.680 回答