Operador & (Referencia de C#)
El operador & puede funcionar como operador unario o binario.
Comentarios
El operador & unario devuelve la dirección de memoria de su operando (requiere un contexto unsafe).
Los operadores & binarios están predefinidos para los tipos enteros y bool.Para tipos enteros, & calcula la operación AND bit a bit lógica de sus operandos.Para operandos de tipo bool, & calcula la operación lógica AND de sus operandos; es decir, el resultado es true si, y sólo si ambos operandos son true.
El operador & evalúa ambos operadores sin tener en cuenta el valor del primero.Por ejemplo:
int i = 0;
if (false & ++i == 1)
{
// i is incremented, but the conditional
// expression evaluates to false, so
// this block does not execute.
}
Los tipos definidos por el usuario pueden sobrecargar el operador binario & (vea operator (Referencia de C#)).Las operaciones en tipos enteros se suelen permitir en enumeraciones.Cuando se sobrecarga un operador binario, el operador de asignación correspondiente, si existe, también se sobrecarga de modo implícito.
Ejemplo
class BitwiseAnd
{
static void Main()
{
// The following two statements perform logical ANDs.
Console.WriteLine(true & false);
Console.WriteLine(true & true);
// The following line performs a bitwise AND of F8 (1111 1000) and
// 3F (0011 1111).
// 1111 1000
// 0011 1111
// ---------
// 0011 1000 or 38
Console.WriteLine("0x{0:x}", 0xf8 & 0x3f);
}
}
// Output:
// False
// True
// 0x38