true.ToString() 
false.toString();

Output:
True
False

是否有一个合理的理由来证明它是“真的”而不是“真的”?当XML的布尔类型是小写时,它就会崩溃,而且也不兼容c#的true/false(不过CLS就不确定了)。

更新

下面是我用c#(用于XML)解决这个问题的一种非常简单的方法。

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

当然,这会向堆栈中多添加1个方法,但会在所有地方删除ToLowers()。


当前回答

为什么它不兼容c# ?布尔。解析和布尔。TryParse是不区分大小写的,解析是通过将值与布尔值进行比较来完成的。TrueString或Boolean。“True”和“False”。

编辑:当看布尔。ToString方法,结果是字符串是硬编码的,所以ToString方法如下:

public override string ToString()
{
    if (!this)
    {
        return "False";
    }
    return "True";
}

其他回答

为什么它不兼容c# ?布尔。解析和布尔。TryParse是不区分大小写的,解析是通过将值与布尔值进行比较来完成的。TrueString或Boolean。“True”和“False”。

编辑:当看布尔。ToString方法,结果是字符串是硬编码的,所以ToString方法如下:

public override string ToString()
{
    if (!this)
    {
        return "False";
    }
    return "True";
}

我知道为什么它是这样的原因已经被解决了,但当涉及到“自定义”布尔格式时,我有两个扩展方法,我不能再没有了:-)

public static class BoolExtensions
{
    public static string ToString(this bool? v, string trueString, string falseString, string nullString="Undefined") {
        return v == null ? nullString : v.Value ? trueString : falseString;
    }
    public static string ToString(this bool v, string trueString, string falseString) {
        return ToString(v, trueString, falseString, null);
    }
}

使用是微不足道的。下面将各种bool值转换为葡萄牙语表示形式:

string verdadeiro = true.ToString("verdadeiro", "falso");
string falso = false.ToString("verdadeiro", "falso");
bool? v = null;
string nulo = v.ToString("verdadeiro", "falso", "nulo");

这是一段简单的代码,可以把它全部转换成小写。

然而,将“真”转换为“真”并不是那么简单。

true.ToString().ToLower() 

是我用于xml输出的。

...因为. net环境被设计成支持多种语言。

系统。布尔(在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#将其表示为' String '类型)。

这可能来自于旧的VB NOT . net时代。ToString产生True或False。