我已经看到文档和答案(1) (2)试图解释 |= 运算符是什么以及它是如何工作的,虽然它在基本层面上是有意义的......我不太明白为什么或它如何完成它的工作。
解释说这a |= b
相当于a = a | b
,但我不明白它是如何评估是给出a
自身的值(a
)还是 的值b
。根据我的理解,“或”意味着它可以是两件事之一,但没有指定它是两件事中的哪一个。
在 Visual Studio 中,我使用了一个名为 Refactoring Essentials 的扩展,它建议我用带有 |= 运算符的行替换我的一些代码,虽然代码与其中的运算符一起工作,但我不知道它是如何完成的,这就是促使我尝试在线研究它的原因(因此,提出了这个问题)。
我的代码来自
if (MessageBox.Show("Are you sure you want to cancel this operation?", "Confirm Cancel", MessageBoxButton.YesNo, MessageBoxImage.Exclamation, MessageBoxResult.No) == MessageBoxResult.No)
{
e.Cancel = true;
}
到
e.Cancel |= MessageBox.Show("Are you sure you want to cancel this operation?", "Confirm Cancel", MessageBoxButton.YesNo, MessageBoxImage.Exclamation, MessageBoxResult.No) == MessageBoxResult.No;
它仍然有效。虽然我猜这e.Cancel
是根据 的评估确定的MessageBox.Show(...) == MessageBoxResult.No
,但我不知道为什么需要 |= 运算符。为什么不直接使用标准赋值 (=) 运算符,因为表达式的结果是布尔值并e.Cancel
采用布尔值?那么使用条件 (? :) 运算符呢?|= 与它相比如何(如果它甚至如此)?