猿问

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

true.ToString() 

false.toString();


Output:

True

False

是否有合理的理由将其设为“ True”而非“ true”?当编写XML时,它会中断,因为XML的布尔类型是小写,并且与C#的true / false(尽管不确定CLS)不兼容。


更新资料


这是我在C#中解决问题的一种非常骇人的方法(用于XML)


internal static string ToXmlString(this bool b)

{

    return b.ToString().ToLower();

}

当然,这会在堆栈中增加1种方法,但是会在所有位置删除ToLowers()。


炎炎设计
浏览 1043回答 3
3回答

慕后森

只有Microsoft的人员才能真正回答这个问题。但是,我想提供一些有趣的事实;)首先,这就是MSDN中关于Boolean.ToString()方法的内容:返回值类型:System.StringTrueString如果此实例的值是true,或者FalseString如果此实例的值是假的。备注此方法返回常量“ True”或“ False”。请注意,XML区分大小写,并且XML规范将“ true”和“ false”识别为有效的布尔值集。如果要将ToString()方法返回的String对象写入XML文件,则应首先调用其String.ToLower方法以将其转换为小写。有趣的事实#1来了:它根本不返回TrueString或FalseString。它使用硬编码字面量“ True”和“ False”。如果使用这些字段,将不会对您有任何好处,因为它们被标记为只读,因此无法进行更改。替代方法Boolean.ToString(IFormatProvider)甚至更有趣:备注提供者参数是保留的。它不参与此方法的执行。这意味着,与大多数带有提供程序参数的方法不同,Boolean.ToString(IFormatProvider)方法不会反映特定于区域性的设置。有什么解决方案?取决于您到底要做什么。不管是什么,我敢打赌这将需要破解;)

紫衣仙女

简单的代码即可将其转换为所有小写字母。然而,将“ true”转换回“ True”并不是那么简单。true.ToString().ToLower() 这是我用于xml输出的内容。
随时随地看视频慕课网APP
我要回答