C#-|和&运算符?编辑:我现在的主要问题是为什么这两个运算符需要重载才能使用&&和||运营商。短路运算符不会取对象的真值或假值并进行比较吗?&&和||在哪里运营商使用和&使用?我正在阅读C#,完整参考,我对|感到很困惑和&运算符。我习惯于将它们视为比较两个整数位的比较运算符,但它们被解释为原始逻辑运算符,其中&&和||是当语句绝对是一个值时停止测试值的短语版本。这是否意味着这两个运算符有多种用途,或者C#在幕后进行类型转换?此外,当使用&&和||时一个类的运算符,为什么他们这样做并且必须重载?为什么不能用true和false值重载类?|and&运算符是对整数的按位运算,对布尔运算符是急切的逻辑运算符。||和&&运算符是布尔运算符上的惰性逻辑运算符。此外,当使用&&和||时一个类的运算符,为什么他们这样做并且必须重载?为什么不能用true和false值重载类?你有一个Foo类,它有一个重载的true和false运算符。您希望Foo上的&&运算符获取两个Foos并返回第三个。解释你打算如何只使用真假运算符。为什么我们需要C#中的急切布尔逻辑运算符?如果要评估两个布尔返回值的副作用并对它们应用逻辑运算。我不明白,用&&和||运算符,我想要返回一个布尔值,而不是另一种类型。那么你不需要超载任何东西。写个Foo到bool的隐式转换运算符就可以用|、||、&、&&来表达你的心意了。仅仅因为您不想要&&或||返回bool以外的东西的运算符并不意味着没有人这样做。假设您想编写一个三值逻辑运算符而不是Foo,其值可以是True、False或Nither。您可以定义&和|&&和||运算符为true、false和两者都不是。显然您不希望操作员返回bool;您希望他们返回True、False或Neither。我不明白的是and&运算符与&&和||有什么关系运营商。他们是完全相同的运营商。唯一的区别是lazy不会计算第二个操作数,如果这样做是不必要的。为什么必须|和&使用||重载和&&虽然?参见之前的问答。|和&运算符采用两个操作数。是的,他们有。&&和||也是如此。运营商。我没想到能在网上找到答案,否则我不会在这里问,但我确实做到了,这就是我所拥有的:来自http://msdn.microsoft.com/en-us/library/aa691312(v=vs.71).aspx它说:操作x&&y被评估为T.false(x)?x:T.&(x,y)操作x&&y被评估为T.false(x)?x:T.&(x,y)换句话说,它评估x为真或假,如果x为假则返回x,否则返回x&y。这可以解释为什么这两个|和&运算符需要为&&和||重载,但它没有解释为什么它不计算为:T.false(x)?x:T.false(y)?y:x如果有人能解释为什么要比较y和x,我将不胜感激。以上就是C#学习教程:C#-|和&运算符?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
