Possible Duplicates:
Why doesn't Java have compound assignment versions of the conditional-and and conditional-or operators? (&&=, ||=)
Why does a “&&=” Operator not exist?
今天上类写了如下LOC(b和b1的真实身份保密:)
b &&= b1; // meaning b = b && b1;
我盯着它看了几秒钟,意识到不存在这样的运算符。可以肯定的是,我点击了编译,但它失败了。为了确定我引用了标准。
是否有没有这样的运营商的具体原因?我能想到一些:
b &&= b1
和b = b && b1
可能不等价,因为 && 的短路评估。- &&= 很丑
- &&= 很少需要
我并不是说拥有这样的运算符会很有用,不。我也没有声称上述三个原因中的任何一个或全部都不足以避免创建该运算符。我的问题如下:我正在监督是否有更严重的原因?
最佳答案
我不知道为什么问题和一些答案都提到相应逻辑运算符的短路行为是一个潜在问题。
定义 &&=
和 ||=
运算符绝对没有与短路相关的问题。它们应该用 +=
和其他类似的运算符统一定义,这意味着 a &&= b
应该等价于 a = a && b
,但 a
在 &&=
版本中只被评估一次。这反过来意味着如果 a
最初为零,则根本不会评估 b
。很简单。
所以,它们在语言中不存在的唯一原因是,嗯,“只是因为”。
关于c# - &&= 和 ||= 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3962991/