【发布时间】:2010-12-29 16:56:31
【问题描述】:
我遇到了一些看起来像这样的代码:
string someString;
...
bool someBoolean = true;
someBoolean &= someString.ToUpperInvariant().Equals("blah");
为什么我要使用按位运算符而不是“=”?
【问题讨论】:
-
我认为该代码相当丑陋。它更短,但当你真正的意思是逻辑与时,我觉得使用按位有点滥用。另请注意,逻辑并支持短路,因此当
someBoolean为true时,无需计算someString.ToUpperInvariant().Equals("blah");。 -
@Brian:应用于布尔值时,它不是按位运算符。
-
@Guffa:是的,你是对的。 The MSDN 实际上明确说明了这一点。我认为标准也是如此。
-
“当应用于布尔值时它不是按位运算符”是什么意思?布尔值不只是一个 1 位数字吗?也就是说,1位按位运算和逻辑布尔运算之间有什么功能区别吗?
-
@JamieTreworgy C# 中的布尔变量存储为 16 位(2 个字节),但其值只能是 0000000000000000 和 111111111111111,所以按位或不按位是相同的。如果 C# 中的 bool 变量可以存储其他值(如 C),那将会有所作为。
标签: c# bitwise-operators