我在Rhino源代码中看到以下代码:
// Summary:
// Or operator for constraints
public static AbstractConstraint operator |(AbstractConstraint c1, AbstractConstraint c2);
但在实践中,我可以使用 | 或 || 。
同样,& 和&& 的工作方式相同。
为什么会这样?
答案 0 :(得分:1)
这实际上是一个C#问题。您不能直接重载条件逻辑运算符 - &&
和||
,以便重载它们,程序员必须重载&
,|
,{{1} }和true
运算符,这些运算符用于计算包含false
和&&
运算符的表达式。 this article中的更多详细信息。
关于Rhino Mocks,他选择以阻止short circuiting的方式实施||
和true
运算符,并使false
和&&
运算符等效到||
和&
,ILSpy输出:
|