mow*_*ker 2 c# operators bitwise-operators logical-operators
编辑:我现在的主要问题是为什么需要重载这两个运算符才能使用&&和|| 运营商.短路运营商不会采用对象的真值或假值并进行比较吗?在哪里使用&&和|| 运营商是| 和&使用?
我正在阅读C#,完整的参考资料,我对|很困惑 和&运营商.我习惯他们是比特运算符,比较两个整数的位,但它们被解释为原始逻辑运算符,&&和|| 是短语版本,当语句肯定是某个值时,它会停止测试值.
这是否意味着两个运算符有多种用途,或者C#是否在幕后进行类型转换?
此外,使用&&和||时 一个班级的运营商,为什么要这样做 并且必须超载?为什么不能只重载类的真值和假值?
Eri*_*ert 14
在|与&运营商按位的整数和操作渴望逻辑上的布尔运算符.的||和&&运营商懒惰逻辑上布尔运算符.
此外,使用&&和||时 一个班级的运营商,为什么要这样做 并且必须超载?为什么不能只重载类的真值和假值?
你有一个Foo类,它有一个重载的true和false运算符.你希望&&Foo 的操作员拿两个Foos并返回第三个.解释你打算如何只使用真假运算符.
为什么我们需要在C#中使用热切的布尔逻辑运算符?
如果您想评估两个布尔返回值的副作用并对它们应用逻辑运算.
我不明白,用&&和|| 运营商,我想要一个bool返回,而不是另一种类型.
然后你不需要超载任何东西.只需将一个隐式转换运算符从Foo写入bool,您就可以使用|,||,&和&&来表达您的内心.
只是因为你不想要一个&&或|| 返回除bool之外的其他东西的运算符并不意味着没有人这样做.假设你想要写一个三值逻辑运算符而不是Foo,其值可以是True,False或Nither.你可以定义&和| 和&&和|| 运营商是真的,假的,都不是.显然你不希望运营商返回bool; 你希望他们返回True,False或Neither.
我不明白的是什么 和&运算符与&&和||有关 运营商.
他们是完全相同的运营商.唯一的区别是,如果不这样做,懒惰的那些不会评估第二个操作数.
为什么必须| 和&重载使用|| 和&&虽然?
请参阅上一个问题和答案.
| 和&运营商采取两个操作数.
是的,他们这样做.&&和||也是如此 运营商.