& 和 && 的区别
& 和 && 都可以用作逻辑与运算符,表示 and。当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true。否则,只要有一方为 false,则结果为 false。
不过,&& 具有短路的功能,如下案例显示,第一个函数返回 false,则不再运行后面的函数。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("regular AND:");
Console.WriteLine("result is {0}", fn1() & fn2());
Console.WriteLine("short-circuit AND:");
Console.WriteLine("result is {0}", fn1() && fn2());
}
static bool fn1()
{
Console.WriteLine("fn1 called");
return false;
}
static bool fn2()
{
Console.WriteLine("fn2 called");
return true;
}
}
其次,& 还可以用作位运算符,当 & 操作符两边的表达式不是 boolean 类型时,& 表示按位与操作。我们通常使用 0x0f 来与一个整数进行 & 运算,来获取该整数的最低 4 个 bit 位,例如:0x31 & 0x0f 的结果为 0x01。