true.ToString()
false.toString();
Output:
True
False
它是否有正当理由"True"而不是"true"?它在写XML时会中断,因为XML的布尔类型是小写的,并且也不是't compatible with C#'的真/假(虽然不确定CLS) .
Update
这是我在C#中解决它的非常hacky方式(用于XML)
internal static string ToXmlString(this bool b)
{
return b.ToString().ToLower();
}
当然,这会给堆栈增加1个方法,但是除了ToLowers()之外 .
8 回答
我知道它之所以已经被解决的原因,但是当谈到“自定义”布尔格式时,我有两种扩展方法,我不能再没有了:-)
用法很简单 . 以下内容将各种bool值转换为其葡萄牙语表示:
只有微软的人才能真正回答这个问题 . 但是,我想提供一些有趣的事实;)
首先,这是它在MSDN中关于 Boolean.ToString() 方法的内容:
这就是有趣的事实#1:它根本不会返回TrueString或FalseString . 它使用硬编码文字“True”和“False” . 如果它使用了字段,那对你没有任何好处,因为它们被标记为只读,所以没有改变它们 .
另一种方法, Boolean.ToString(IFormatProvider) 甚至更有趣:
解决方案是什么?取决于你究竟想做什么 . 无论是什么,我打赌它需要一个黑客;)
...因为.NET环境旨在支持多种语言 .
System.Boolean(在mscorlib.dll中)被设计为由语言在内部使用以支持布尔数据类型 . C#对其关键字使用全部小写,因此'bool','true'和'false' .
然而,VB.NET使用标准外壳:因此'Boolean','True'和'False' .
由于语言必须协同工作,因此无法使用true.ToString()(C#)为True.ToString()(VB.NET)提供不同的结果 . CLR设计者为ToString()结果选择了标准的CLR外壳表示法 .
布尔值true的字符串表示形式定义为Boolean.TrueString .
(System.String也有类似的情况:C#将其表示为'字符串'类型) .
对于Xml,您可以使用XmlConvert.ToString方法 .
这是将其转换为全部小写的简单代码 .
然而,将“true”转换回“True”并不是那么简单 .
是我用于xml输出的内容 .
它与C#有什么不兼容? Boolean.Parse和Boolean.TryParse不区分大小写,并且通过将值与Boolean.TrueString或Boolean.FalseString(“True”和“False”)进行比较来完成解析 .
编辑:当在反射器中查看Boolean.ToString方法时,结果证明字符串是硬编码的,因此ToString方法如下:
之所以
true
是因为微软与XML标准的紧密联系 .来自Wikipedia:“可扩展标记语言(XML)是一种标记语言,它定义了一组规则,用于以 human-readable 和机器可读的格式对文档进行编码 . ”
人类可读是主观的,但在XML的眼中,使用单词“One”代替数字“1”是优选的 . 你会注意到这是使用枚举发生的,因为单词被序列化而不是它的值(“FirstOption”而不是“0”或“1”) .
同样,文本通常遵循CamelCasing . 因此,XML更喜欢"String"而不是"string" . 这就是为什么Boolean.TrueString是"True"并且Boolean.FalseString默认是"False" .
当bool.ToString产生True或False时,这可能与旧的VB NOT .Net天有关 .