Согласно документации Microsoft:
1. & Operator поддерживается в двух формах: унарный оператор с адресом или двоичный логическийoperator.
Унарный адрес оператора:
Унарный оператор &
возвращает адрес своего операнда.Для получения дополнительной информации см. Как: получить адрес переменной .Оператор адреса &
требует небезопасного контекста.
Целочисленный логический побитовый оператор И:
Для целочисленных типов оператор &
вычисляет логический побитовый код AND
его операндов:
uint a = 0b_1111_1000;
uint b = 0b_1001_1111;
uint c = a & b;
Console.WriteLine(Convert.ToString(c, toBase: 2));
// Output:
// 10011000
2. Оператор && является условным логическим оператором И, также известным как оператор «короткого замыкания» логического И, вычисляет логическое Иего булевых операндов.Результат x && y
истинен, если оба значения x
и y
равны true
.В противном случае результат равен false
.Если первый операнд оценивается как false
, второй операнд не оценивается, а результат операции равен false
. Следующий пример демонстрирует такое поведение:
bool SecondOperand()
{
Console.WriteLine("Second operand is evaluated.");
return true;
}
bool a = false && SecondOperand(); // <-- second operand is not evaluated here
Console.WriteLine(a);
// Output:
// False
bool b = true && SecondOperand(); // <-- second operand is evaluated here
Console.WriteLine(b);
// Output:
// Second operand is evaluated.
// True
Теперь в случае EF/ EF Базовое поведение @Иван Стоев объяснил это очень сильно: Здесь