# & Operator (C# Reference)

**Visual Studio 2005**

The & operator can function as either a unary or a binary operator.

The unary & operator returns the address of its operand (requires unsafe context).

Binary & operators are predefined for the integral types and **bool**. For integral types, & computes the logical bitwise AND of its operands. For **bool** operands, & computes the logical AND of its operands; that is, the result is **true** if and only if both its operands are **true**.

The **&** operator evaluates both operators regardless of the first one's value. For example:

int i = 0; if (false & ++i == 1) { // i is incremented, but the conditional // expression evaluates to false, so // this block does not execute. }

User-defined types can overload the binary **&** operator (see operator). Operations on integral types are generally allowed on enumeration. When a binary operator is overloaded, the corresponding assignment operator, if any, is also implicitly overloaded.