为什么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