Mat*_*kan 9 c# bitwise-operators
我遇到了一些看起来像这样的代码:
string someString;
...
bool someBoolean = true;
someBoolean &= someString.ToUpperInvariant().Equals("blah");
Run Code Online (Sandbox Code Playgroud)
为什么我会使用按位运算符而不是"="?
Guf*_*ffa 21
当它应用于布尔运算符时,它不是一个按位运算符.
它与以下相同:
someBoolean = someBoolean & someString.ToUpperInvariant().Equals("blah");
Run Code Online (Sandbox Code Playgroud)
您通常会看到快捷方式和运算符&&,但是&当应用于布尔运算符时,运算符也是运算符,只有它不执行快捷位.
您可以使用&&运算符(但没有&&=运算符)来节省一些计算.如果someBoolean包含false,则不会评估第二个操作数:
someBoolean = someBoolean && someString.ToUpperInvariant().Equals("blah");
Run Code Online (Sandbox Code Playgroud)
在您的特殊情况下,变量设置为true之前的行,因此和操作是完全不必要的.您只需计算表达式并分配给变量即可.此外,您应该使用比较来处理您想要比较的方式,而不是转换字符串然后进行比较:
bool someBoolean =
"blah".Equals(someString, StringComparison.InvariantCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
它的缩写是:
someBoolean = someBoolean & someString.ToUpperInvariant().Equals("blah");
Run Code Online (Sandbox Code Playgroud)
请参阅MSDN(&= 运算符)。
| 归档时间: |
|
| 查看次数: |
12819 次 |
| 最近记录: |