繁体   English   中英

C#条件语句

[英]C# conditional statement

我想切换isFollowing的值。 如果是真的,我要isFollowing = false,反之亦然。

我使用的不是'if'语句?

        isFollowing == true ? isFollowing = false : isFollowing = true;

但这是行不通的。 它给出了“仅赋值,调用,递增,递减和新的对象表达式可以用作语句”的原因?

提前致谢

如果您想将其保留为三元组,则可以

isFollowing = (isFollowing == true ? false : true);

但是,这是一个简短得多的等效项:

isFollowing = !isFollowing;

您的代码无法正常工作的原因是三元本身就是一个表达式,而并非所有的表达式都是有效的语句。 通过将其转换为三进制值的赋值,它成为一条语句。

只要满足操作符优先级规则,您的代码就很可能在C语言中有效,但是C#不允许您这样做。 作为一种实践,即使语言允许,也最好将三元分支限制为无副作用。

采用:

isFollowing = !isFollowing;

要使用三元运算符进行这项工作:

isFollowing = isFollowing ? false : true;

但是不要那样做,只需使用第一个版本即可。

您拥有的东西不起作用的原因是因为三元运算符具有以下形式

conditon ? expression_if_condition_is_true : expression_if_condition_is_false;

和(这个计算结果为表达expression_if_condition_is_true如果conditiontrueexpression_if_condition_is_false如果conditionfalse )。 表达式不能用作语句,除非它们是方法调用,递增(即i++ ),递减,使用new和赋值的分配。

当然,更简单的方法是:

isFollowing = !isFollowing;

否则使用?:

isFollowing = isFollowing ? false : true;

出现错误的原因是在表达式中间有一个赋值:

isFollowing == true ? isFollowing = false : isFollowing = true;
                                  ^
                                here

三元运算符是一个表达式,您不能单独拥有这种类型的表达式,需要将其分配给某些对象。

这里的其他答案为您提供有关如何重写它的解决方案:

isFollowing = !isFollowing;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM