您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

.NET中依靠&&短路安全吗?

.NET中依靠&&短路安全吗?

是。在C#&&||被短路,从而评估右侧只有左侧尚不确定结果。运营商&|在另一方面也不短路,并始终评估两侧。

规格说明:

&&||运营商被称为条件逻辑运算符。它们也称为“短路”逻辑运算符。 … 该运算x && y符与该运算符相对应x & y,但y仅当xtrue … 时才进行 运算。换句话说,首先被评估并转换为type 。然后,如果是,进行评估并将其转换为类型,并且这成为操作的结果。否则,运算结果为。x && y``(bool)x ? (bool)y : false``x``bool``x``true``y``bool``false

(C#语言规范版本4.0-7.12条件逻辑运算符)

一个有趣的性质&&,并||为它们短路,即使他们不上的bool操作,但如果用户重载运营商的类型&|与一起truefalse运营商。

该操作x && y的计算方式为T.false((T)x) ? (T)x : T.&((T)x, y),其中T.false((T)x)是在中operator false声明的调用T,而T.&((T)xy)是对选定对象的调用operator &。此外,值(T)x仅应评估一次。

换句话说,x首先要求值并将其转换为type,T然后operator false对结果进行调用以确定是否x绝对是false。 然后,如果x是肯定的话false,则运算的结果是先前计算出的值,以x转换为type T。 否则,y将对其求值,然后对&先前计算出的要x转换为type T的值和计算出的y要产生操作结果的值调用所选的运算符。

(C#语言规范版本4.0-7.12.2用户定义的条件逻辑运算符)

dotnet 2022/1/1 18:13:40 有549人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶