逻辑(布尔型)运算符用于对boolean型的结果的表达式进行运算,运算的结果都是boolean型。其运算结果如下所示: 
运算符 运算 例子 结果  
& AND(与) false&true false  
| OR(或) false|true true  
^ XOR(异或) false^true true  
! NOT(非) !false true  
&& AND(短路) false&&true false  
|| OR(短路) false||true true 
 
下面对一些比较容易出现问题进行简单解释: 
1、“^“ 将计算操作数的逻辑“异或”;也就是说,当且仅当只有一个操作数为 true时,结果才为true。 
2、“&”与”&&“的区别在于,如果使用前者连接,那么无论任何情况下,“&”两边的表达式都会参与计算。如果使用后者连接,当“&&”的左边为false,则将不会计算其右边的表达式。 
3、“|”与“||”的区别在于,“|”表示两边任何一个布尔表达式为真,该组合就会返回true值;而对于“||”,跟第二差不多,若左边是true则返回true,若左边是falsh,则看右边,若右边为true则为true否则为falsh。 
例 
 代码如下 复制代码  
using System; 
using System.Data; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
public partial class _Default : System.Web.UI.Page  
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
        int x = 0; 
        string name = "搜索吧"; 
        //&运算,两个中任何一个为假时则为假 
        Response.Write("x != 0 & name = /"搜索吧/"的运算结果是:"+ (x != 0 & name == "搜索吧")); 
        Response.Write("<br>"); 
        //|运算,当两个中任何一个为真时,运算结果为真,否则为加 
        Response.Write("x != 0 | name = /"搜索吧/"的运算结果是:" + (x != 0 | name == "搜索吧")); 
        Response.Write("<br>www.111cn.net"); 
        //^运算,当且仅当有一个是True时,为真,否则为假 
        Response.Write("x != 0 ^ name = /"搜索吧/"的运算结果是:" + (x != 0 ^ name == "搜索吧")); 
        Response.Write("<br>"); 
        Response.Write("x == 0 ^ name = /"搜索吧/"的运算结果是:" + (x == 0 ^ name == "搜索吧")); 
        Response.Write("<br>"); 
        //!运算,若真则假,若假则真 
        Response.Write("x != 0 的运算结果是:" + !(x != 0)); 
        Response.Write("<br>"); 
        //&&短路运算,若左边为假则退出,若左边为真,则看右边 
        Response.Write("x != 0 && name = /"搜索吧/"的运算结果是:" + (x != 0 && name == "搜索吧")); 
        Response.Write("<br>"); 
        //||短路运算,若左边为真,则为真退出;若左边为假,则看右边,右边为真,则为真,否则为假 
        Response.Write("x != 0 || name = /"搜索吧/"的运算结果是:" + (x != 0 || name == "搜索吧")); 
    } 
} 
 
运算符 
     C# 提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。通常允许对枚举进行整型运算,例如 ==、!=、<、>、<=、>=、binary +、binary -、^、&、|、~、++、-- 和 sizeof()。此外,很多运算符可被用户重载,由此在应用到用户定义的类型时更改这些运算符的含义。 
  
运算符类别 运算符  
基本 x.y 
f(x) 
a[x] 
x++ 
x-- 
new 
typeof 
checked 
unchecked 
->  
一元 + 
- 
! 
~ 
++x 
--x 
(T)x 
True 
False 
& 
sizeof  
乘法 * 
/ 
%  
加法 + 
-  
变换 << 
>>  
关系和类型检测 < 
> 
<= 
>= 
is 
as  
相等 == 
!=  
逻辑“与” &  
逻辑 XOR ^  
逻辑“或” |  
条件 AND &&  
条件 OR ||  
条件运算 ?:  
赋值 = 
+= 
-= 
*= 
/= 
%= 
&= 
|= 
^= 
<<= 
>>= 
??  
•运算符优先级  
1.前++ 前-- +(正号) -(负号)! ~ 
2.* / % 
3.+ - 
4.<< >> 
5.< > <= >= 
6.== != 
7.& 
8.^ 
9.| 
10.&& 
11.|| 
12.赋值运算 
13.后++ 后-- 
•可重载运算符 
     C# 允许用户定义的类型通过使用 operator 关键字定义静态成员函数来重载运算符。但不是所有的运算符都可被重载,下表列出了不能被重载的运算符: 
运算符 可重载性  
+、-、!、~、++、--、true 和 false 可以重载这些一元运算符。  
+, -, *, /, %, &, |, ^, <<, >> 可以重载这些二进制运算符。  
==, !=, <, >, <=, >= 比较运算符可以重载(但请参见本表后面的说明)。  
&&, || 条件逻辑运算符不能重载,但可使用能够重载的 & 和 | 进行计算。  
[] 不能重载数组索引运算符,但可定义索引器。  
() 不能重载转换运算符,但可定义新的转换运算符(请参见 explicit 和 implicit)。  
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= 赋值运算符不能重载,但 += 可使用 + 计算,等等。  
=、.、?:、->、new、is、sizeof 和 typeof 不能重载这些运算符。  
•语法 
public static Complex operator +(Complex c1, Complex c2) 
 |   
        
 
    
    
    
     
 
 |