为什么Boolean.ToString输出“True”而不是“true”

true.ToString() 
false.toString();

Output:
True
False

有没有一个有效的理由是“真”而不是“真”? 当编写XML时,XML的布尔类型是小写,并且与C#的真/假不兼容(但不确定CLS)。

更新

这是我用C#解决它的一种非常冒险的方式(用于XML)

internal static string ToXmlString(this bool b)
{
    return b.ToString().ToLower();
}

当然,这增加了1个方法到堆栈,但是到处移除了ToLowers()。


只有来自微软的人才能真正回答这个问题。 不过,我想提供一些有趣的事实;)

首先,这就是它在MSDN中关于Boolean.ToString()方法所说的内容:

返回值

类型:System.String

如果此实例的值为true,则为TrueString;如果此实例的值为false,则为FalseString。

备注

此方法返回常量“True”或“False”。 请注意,XML区分大小写,并且XML规范将“真”和“假”识别为布尔值的有效集合。 如果要将ToString()方法返回的String对象写入XML文件,则应首先调用其String.ToLower方法以将其转换为小写。

这里有趣的事实#1:它根本不返回TrueString或FalseString。 它使用硬编码的文字“真”和“假”。 如果它使用了字段,那么它们不会有任何好处,因为它们被标记为只读,所以不会改变它们。

另一种方法, Boolean.ToString(IFormatProvider)更有趣:

备注

提供者参数是保留的。 它不参与执行此方法。 这意味着与提供者参数的大多数方法不同,Boolean.ToString(IFormatProvider)方法不反映文化特定的设置。

什么是解决方案? 取决于你想要做什么。 不管它是什么,我敢打赌它需要黑客;)


...因为.NET环境旨在支持多种语言。

System.Boolean(在mscorlib.dll中)被设计为由语言在内部使用以支持布尔数据类型。 C#对其关键字使用全部小写字母,因此'bool','true'和'false'。

然而,VB.NET使用标准外壳:因此'布尔','真'和'假'。

由于语言必须一起工作,因此不能让True.ToString()(C#)给True.ToString()(VB.NET)提供不同的结果。 CLR设计人员为ToString()结果选择了标准的CLR套管表示法。

布尔值true的字符串表示形式被定义为Boolean.TrueString。

(System.String有一个类似的例子:C#将它呈现为'string'类型)。


对于Xml,你可以使用XmlConvert.ToString方法。

链接地址: http://www.djcxy.com/p/52775.html

上一篇: Why does Boolean.ToString output "True" and not "true"

下一篇: Crystal reports suppressed section still leaves blank spot