以前都沒怎么注意兩者的區別(我甚至都不知道“&”),因為它們都是“與”運算符。
二元運算符 (&) 為整型和 bool 類型預定義了二進制 & 運算符。對於整型,& 計算操作數的按位“與”。對於 bool 操作數,& 計算操作數的邏輯“與”;也就是說,當且僅當兩個操作數均為 true 時,其結果才為 true。條件“與”運算符 (&&) 執行布爾操作數的邏輯“與”運算,但如有必要,只計算第二個操作數。它與二元運算符 (&)很像,不同的是,如果 x 為 false,則不計算 y(因為不論 y 為何值,與操作的結果都為 false)。這被稱作為“短路”計算。
cs_operator_logical_and.cs
using System;
class Test
{
static bool fn1()
{
Console.WriteLine("fn1 called");
return false;
}
static bool fn2()
{
Console.WriteLine("fn2 called");
return true;
}
public static void Main()
{
Console.WriteLine("regular AND:");
Console.WriteLine("result is {0}", fn1() & fn2());
Console.WriteLine("short-circuit AND:");
Console.WriteLine("result is {0}", fn1() && fn2());
}
}
輸出:
regular AND: fn1 called fn2 called result is False short-circuit AND: fn1 called result is False BTW (&) 也可作為一元運算符,返回操作數的地址 PS. (|) 與 (||) 運算符也是一樣的道理

