为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2019-10-28 18:37:23
true.ToString() false.toString();Output:TrueFalse是否有合理的理由将其设为“ True”而非“ true”?当编写XML时,它会中断,因为XML的布尔类型是小写,并且与C#的true / false(尽管不确定CLS)不兼容。更新资料这是我在C#中解决问题的一种非常骇人的方法(用于XML)internal static string ToXmlString(this bool b){    return b.ToString().ToLower();}当然,这会在堆栈中增加1种方法,但是会在所有位置删除ToLowers()。
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

只有Microsoft的人员才能真正回答这个问题。但是,我想提供一些有趣的事实;)


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


返回值


类型:System.String


TrueString如果此实例的值是true,或者FalseString如果此实例的值是假的。


备注


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


有趣的事实#1来了:它根本不返回TrueString或FalseString。它使用硬编码字面量“ True”和“ False”。如果使用这些字段,将不会对您有任何好处,因为它们被标记为只读,因此无法进行更改。


替代方法Boolean.ToString(IFormatProvider)甚至更有趣:


备注


提供者参数是保留的。它不参与此方法的执行。这意味着,与大多数带有提供程序参数的方法不同,Boolean.ToString(IFormatProvider)方法不会反映特定于区域性的设置。


有什么解决方案?取决于您到底要做什么。不管是什么,我敢打赌这将需要破解;)


查看完整回答
反对 回复 2019-10-28
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

简单的代码即可将其转换为所有小写字母。


然而,将“ true”转换回“ True”并不是那么简单。


true.ToString().ToLower() 

这是我用于xml输出的内容。


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 1042 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信