Оператор && (справочник по C#)&& Operator (C# Reference)

Условный оператор И (&&) выполняет логическую операцию И применительно к своим операндам типа bool, но вычисляет только второй операнд при необходимости.The conditional-AND operator (&&) performs a logical-AND of its bool operands, but only evaluates its second operand if necessary.

ПримечанияRemarks

ОперацияThe operation

x && y  

соответствует операцииcorresponds to the operation

x & y  

за исключением того, что если x имеет значение false, y не вычисляется, так как результат операции И — false независимо от того, какое значение имеет y.except that if x is false, y is not evaluated, because the result of the AND operation is false no matter what the value of y is. Это называется сокращенным вычислением.This is known as "short-circuit" evaluation.

Оператор условного И не может быть перегружен, но перегрузки регулярных логических операторов и операторов true и false могут, с некоторыми ограничениями, считаться перегрузками условных логических операторов.The conditional-AND operator cannot be overloaded, but overloads of the regular logical operators and operators true and false are, with certain restrictions, also considered overloads of the conditional logical operators.

ПримерExample

В приведенном ниже примере условное выражение во втором операторе if вычисляет только первый операнд, так как операнд возвращает false.In the following example, the conditional expression in the second if statement evaluates only the first operand because the operand returns false.

class LogicalAnd
{
    static void Main()
    {
        // Each method displays a message and returns a Boolean value. 
        // Method1 returns false and Method2 returns true. When & is used,
        // both methods are called. 
        Console.WriteLine("Regular AND:");
        if (Method1() & Method2())
            Console.WriteLine("Both methods returned true.");
        else
            Console.WriteLine("At least one of the methods returned false.");

        // When && is used, after Method1 returns false, Method2 is 
        // not called.
        Console.WriteLine("\nShort-circuit AND:");
        if (Method1() && Method2())
            Console.WriteLine("Both methods returned true.");
        else
            Console.WriteLine("At least one of the methods returned false.");
    }

    static bool Method1()
    {
        Console.WriteLine("Method1 called.");
        return false;
    }

    static bool Method2()
    {
        Console.WriteLine("Method2 called.");
        return true;
    }
}
// Output:
// Regular AND:
// Method1 called.
// Method2 called.
// At least one of the methods returned false.

// Short-circuit AND:
// Method1 called.
// At least one of the methods returned false.

Спецификация языка C#C# Language Specification

Дополнительные сведения см. в спецификации языка C#.For more information, see the C# Language Specification. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.The language specification is the definitive source for C# syntax and usage.

См. такжеSee Also

Справочник по C#C# Reference
Руководство по программированию на C#C# Programming Guide
Операторы в C#C# Operators