c# 中的赋值运算符在任何情况下都采用除 bool 之外的任何其他值吗?

我最近开始学习 c# 并知道 if 条件只接受赋值运算符的布尔值,如下面的代码所示。但我想知道是否有任何情况下 if 采用除 bool 以外的任何值。


我尝试将“a”的类型更改为 char,但它给了我一个编译时错误。


Console.Write("Enter a character: ");

char c = (char)Console.Read();

bool a;

if (a=Char.IsLetter(c))

{

    if (a=Char.IsLower(c))

    {

        Console.WriteLine("The character is lowercase.");

    }

    else

    {

        Console.WriteLine("The character is uppercase.");

    }

}

else

{

    Console.WriteLine("Not a character");

}


眼眸繁星
浏览 83回答 2
2回答

繁星coding

我有时会使用这样的表达方式:-string a = null;    if((a = GetValue()) != null){    DoSomething();    }分配除 null 以外的其他值并检查它是否为布尔表达式是一种很好的语法。尽管请记住,最外面的括号总是要求一个布尔表达式。

MM们

但我想知道是否有任何情况下 if 采用除 bool 以外的任何值。不,不,有点像if-else(C# 参考)if 语句根据布尔表达式的值标识要运行的语句以下仅适用,因为结果是布尔值if (a=Char.IsLower(c))它相当于a=Char.IsLower(c);if (a)和下面一样a,b变成结果Char.IsLower(c)bool a = false;bool b = false;&nbsp;a = b = Char.IsLower(c)...结果必须等于 bool(故事结束)警告(如果你想这样称呼它)是可以为空的和Lifted Operators。提升的运算符是通过“提升”已经存在于不可空形式上的运算符来处理可空类型的运算符,但它仍然必须等同于布尔表达式。?int bob = nullif(bob > 3) { ... }其他资源来自C# 规范12.4.8 提升运营商对于等式运算符== !=如果操作数类型都是不可为空的值类型并且结果类型是 bool,则存在运算符的提升形式。提升的形式是通过添加单个 ?&nbsp;每个操作数类型的修饰符。提升的运算符认为两个空值相等,一个空值不等于任何非空值。如果两个操作数都不为空,则提升的运算符解开操作数并应用底层运算符来产生 bool 结果。对于关系运算符< > <= >=如果操作数类型都是不可为空的值类型并且结果类型是 bool,则存在运算符的提升形式。提升的形式是通过添加单个 ?&nbsp;每个操作数类型的修饰符。如果一个或两个操作数为空,则提升的运算符产生值 false。否则,提升的运算符会展开操作数并应用底层运算符来生成 bool 结果。
打开App,查看更多内容
随时随地看视频慕课网APP