다음을 통해 공유


|| 연산자(C# 참조)

조건부 논리합 연산자 (||)는 논리 OR를 수행 그 bool 피연산자입니다.첫 번째 피연산자가 계산 되는 경우 true, 두번째 피연산자는 평가 되지 않습니다.첫 번째 피연산자가 계산 되는 경우 false를 두 번째 연산자 OR 식을 전체적으로 계산 되는지 여부를 결정 true 또는 false.

설명

아래 연산은

x || y

다음 연산에 해당하지만

x | y

경우를 제외 하 고 x 는 true, y OR 연산 이므로 계산 하지 true 의 값에 관계 없이 y.이 개념은 단락"계산"으로 알려져 있습니다.

오버 OR 연산자를 제외한 정규 논리 연산자의 오버 로드할 수 없습니다 및 truefalse 연산자, 특정 제한으로도 간주 조건부 논리 연산자의 오버 로드 됩니다.

예제

다음 예제에서는 표현식을 사용 하 || 에서 첫째 피연산자만 계산 합니다.사용 하는 식|두 피연산자를 모두 계산합니다.두 번째 예제에서는 두 피연산자를 모두 계산 하는 경우 런타임 예외를 발생 합니다.

class ConditionalOr
{
    // Method1 returns true.
    static bool Method1()
    {
        Console.WriteLine("Method1 called.");
        return true;
    }

    // Method2 returns false.
    static bool Method2()
    {
        Console.WriteLine("Method2 called.");
        return false;
    }


    static bool Divisible(int number, int divisor)
    {
        // If the OR expression uses ||, the division is not attempted
        // when the divisor equals 0.
        return !(divisor == 0 || number % divisor != 0);

        // If the OR expression uses |, the division is attempted when
        // the divisor equals 0, and causes a divide-by-zero exception.
        // Replace the return statement with the following line to
        // see the exception.
        //return !(divisor == 0 | number % divisor != 0);
    }

    static void Main()
    {
        // Example #1 uses Method1 and Method2 to demonstrate 
        // short-circuit evaluation.

        Console.WriteLine("Regular OR:");
        // The | operator evaluates both operands, even though after 
        // Method1 returns true, you know that the OR expression is
        // true.
        Console.WriteLine("Result is {0}.\n", Method1() | Method2());

        Console.WriteLine("Short-circuit OR:");
        // Method2 is not called, because Method1 returns true.
        Console.WriteLine("Result is {0}.\n", Method1() || Method2());


        // In Example #2, method Divisible returns True if the
        // first argument is evenly divisible by the second, and False
        // otherwise. Using the | operator instead of the || operator
        // causes a divide-by-zero exception.

        // The following line displays True, because 42 is evenly 
        // divisible by 7.
        Console.WriteLine("Divisible returns {0}.", Divisible(42, 7));

        // The following line displays False, because 42 is not evenly
        // divisible by 5.
        Console.WriteLine("Divisible returns {0}.", Divisible(42, 5));

        // The following line displays False when method Divisible 
        // uses ||, because you cannot divide by 0.
        // If method Divisible uses | instead of ||, this line
        // causes an exception.
        Console.WriteLine("Divisible returns {0}.", Divisible(42, 0));
    }
}
/*
Output:
Regular OR:
Method1 called.
Method2 called.
Result is True.

Short-circuit OR:
Method1 called.
Result is True.

Divisible returns True.
Divisible returns False.
Divisible returns False.
*/

참고 항목

참조

C# 연산자

개념

C# 프로그래밍 가이드

기타 리소스

C# 참조