& 演算子 (C# リファレンス)
& 演算子は、単項演算子または二項演算子として機能します。
解説
単項 & 演算子では、オペランドのアドレスが返されます (unsafeコンテキストが必要)。
二項 & 演算子は、整数型と bool に対してあらかじめ定義されています。 整数型の場合、& はオペランドのビットごとの論理 AND を計算します。 bool オペランドの場合は、オペランドの論理 AND が計算されます。つまり、両方のオペランドが true の場合だけ結果が true になります。
& 演算子は、1 番目の演算子の値に関係なく、両方の演算子を評価します。 次に例を示します。
int i = 0;
if (false & ++i == 1)
{
// i is incremented, but the conditional
// expression evaluates to false, so
// this block does not execute.
}
二項 & 演算子はユーザー定義型でオーバーロードできます。詳細については、「operator (C# リファレンス)」を参照してください。 通常、整数型に対する演算は、列挙に対して適用されます。 二項演算子をオーバーロードすると、対応する代入演算子がある場合には、この演算子も暗黙でオーバーロードされます。
使用例
class BitwiseAnd
{
static void Main()
{
Console.WriteLine(true & false); // logical and
Console.WriteLine(true & true); // logical and
Console.WriteLine("0x{0:x}", 0xf8 & 0x3f); // bitwise and
}
}
/*
Output:
False
True
0x38
*/