^符號被稱為XOR操作符。 XOR就像一個OR語句,但是有一點不同:OR只有當它的一個操作數為TRUE(其它的操作數為FALSE)時才會 返回TRUE。即使這兩個操作數都是TRUE,它也會返回FALSE。xor是一個IL指令。
!=操作符被轉換 為一組常規的IL指令,即完成一次比較操作,而程序會相應地進入分支。
a.cs
class zzz
{
public static void Main()
{
bool x = true;
System.Console.WriteLine(!x);
}
}
a.il
.assembly mukhi {}
.class private auto ansi zzz extends [mscorlib]System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
.locals (bool V_0)
ldc.i4.1
stloc.0
ldloc.0
ldc.i4.0
ceq
call void [mscorlib]System.Console::WriteLine(bool)
ret
}
}
Output
False
C#中的!操作符會被轉換為TRUE或 FALSE,反之亦然。在IL中,使用指令ceq。這個指令檢查了棧上最後的2個參數。如果它們相同,就返回 TRUE;否則,就返回FALSE。
由於變量x為TRUE,它會被初始化為1。此後,會檢查它是否和0相同 。因為它們是不相等的,結果為0或FALSE。這個結果會被放到棧上。同樣適用的邏輯使x為FALSE。0將會 被放到棧上,並檢查它是否和另一個0相等。由於它們是匹配的,所以最後的答案將會是TRUE。