Code Bye

C# & | 是什么意思

40

先从逻辑角度说一下:
1.&&是逻辑与,&是按位与。
&&只用于布尔值,&可用于布尔值和位。
假如把二进制1看作真,0看作假,则&&与&的逻辑结果一致。
2.||是逻辑或,|是按位或。
||只用于布尔值,|可用于布尔值和位。
假如把二进制1看作真,0看作假,则||与|的逻辑结果一致。
但是逻辑或与位按或还是有区别
计算 a||b时,若a为true,则不会再对b计算(调用函数或取值)
true ||b的写法编译器会直接给出警告:检测到无法访问的代码。
计算a|b时,即使a为true也会计算b。
private Boolean getTrue()
{
System.Diagnostics.Debug.Print(“getTrue”);
return true;
}
Boolean b = true | getTrue();
仍然会输出”getTrue”。
下面的代码作为参考:
System.Diagnostics.Debug.Print((0 & 0).ToString());
System.Diagnostics.Debug.Print((1 & 0).ToString());
System.Diagnostics.Debug.Print((0 & 1).ToString());
System.Diagnostics.Debug.Print((1 & 1).ToString());
System.Diagnostics.Debug.Print((false & false).ToString());
System.Diagnostics.Debug.Print((true & false).ToString());
System.Diagnostics.Debug.Print((false & true).ToString());
System.Diagnostics.Debug.Print((true & true).ToString());
System.Diagnostics.Debug.Print((false && false).ToString());
System.Diagnostics.Debug.Print((true && false).ToString());
System.Diagnostics.Debug.Print((false && true).ToString());
System.Diagnostics.Debug.Print((true && true).ToString());
System.Diagnostics.Debug.Print((0 | 0).ToString());
System.Diagnostics.Debug.Print((1 | 0).ToString());
System.Diagnostics.Debug.Print((0 | 1).ToString());
System.Diagnostics.Debug.Print((1 | 1).ToString());
System.Diagnostics.Debug.Print((false | false).ToString());
System.Diagnostics.Debug.Print((true | false).ToString());
System.Diagnostics.Debug.Print((false | true).ToString());
System.Diagnostics.Debug.Print((true | true).ToString());
System.Diagnostics.Debug.Print((false || false).ToString());
System.Diagnostics.Debug.Print((true || false).ToString());
System.Diagnostics.Debug.Print((false || true).ToString());
System.Diagnostics.Debug.Print((true || true).ToString());
输出的结果是
0
0
0
1
False
False
False
True
False
False
False
True
0
1
1
1
False
True
True
True
False
True
True
True

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# & | 是什么意思