true 연산자는 bool 값 true를 반환하여 피연산자가 확실히 true임을 나타내고 false 연산자는 피연산자가 확실히 false임을 나타내는 bool 값 true를 반환합니다.
C# 언어 참조는 가장 최근에 릴리스된 C# 언어 버전을 문서화합니다. 또한 예정된 언어 릴리스의 공개 미리 보기 기능에 대한 초기 설명서도 포함되어 있습니다.
설명서는 언어의 마지막 세 버전 또는 현재 공개 미리 보기에서 처음 도입된 기능을 식별합니다.
팁
C#에서 기능이 처음 도입된 시기를 찾으려면 C# 언어 버전 기록에 대한 문서를 참조하세요.
두 연산자를 모두 truefalse 구현하는 형식은 다음 의미 체계를 따라야 합니다.
- "이 개체가 true인가요?"는 연산자
true로 확인됩니다. 연산자true는 개체가true인 경우true를 반환합니다. 대답은 "예, 이 개체는 true입니다"입니다. - "이 개체가 false인가요?"는 연산자
false로 확인됩니다. 연산자false는 개체가true인 경우false를 반환합니다. 대답은 "예, 이 개체는 false"입니다.
true 및 false 연산자는 서로를 보완한다고 보장되지 않습니다. 즉, true 및 false 연산자는 모두 bool 값을 동일한 false 피연산자에 반환할 수도 있습니다. 형식이 두 연산자 중 하나를 정의하는 경우 나머지 연산자도 정의해야 합니다.
팁
bool? 세 가지 값 논리를 지원해야 하는 경우 형식을 사용합니다(예: 3값 부울 형식을 지원하는 데이터베이스로 작업하는 경우). C#은 피연산자와 함께 bool? 세 가지 값 논리를 지원하는 연산자와 연산자를 제공합니다.&| 자세한 내용은 부울 논리 연산자 문서의 Nullable 부울 논리 연산자 섹션을 참조하세요.
부울 식
정의된 true 연산자가 있는 형식은 if, do, while 및 for 문과 조건부 연산자?:에서 제어하는 조건식의 결과 형식일 수 있습니다. 자세한 내용은 C# 언어 사양의 부울 식 섹션을 참조하세요.
사용자 지정 조건부 논리 연산자
정의된 true 및 false 연산자가 있는 형식이 특정 방식으로 논리적 OR 연산자 또는 |를 &하는 경우, 조건부 논리적 OR 연산자|| 또는 조건부 논리적 AND 연산자&&가 해당 형식의 피연산자에 대해 각각 계산될 수 있습니다. 자세한 내용은 C# 언어 사양의 사용자 정의 조건부 논리 연산자 섹션을 참조하세요.
예제
다음 예제는 true 및 false 연산자를 둘 다 정의하는 형식을 제공합니다. 또한 이 형식은 해당 형식의 피연산자에 대해 연산 & 자를 평가할 수 있는 방식으로 && 논리 AND 연산자를 오버로드합니다.
public struct LaunchStatus
{
public static readonly LaunchStatus Green = new LaunchStatus(0);
public static readonly LaunchStatus Yellow = new LaunchStatus(1);
public static readonly LaunchStatus Red = new LaunchStatus(2);
private int status;
private LaunchStatus(int status)
{
this.status = status;
}
public static bool operator true(LaunchStatus x) => x == Green || x == Yellow;
public static bool operator false(LaunchStatus x) => x == Red;
public static LaunchStatus operator &(LaunchStatus x, LaunchStatus y)
{
if (x == Red || y == Red || (x == Yellow && y == Yellow))
{
return Red;
}
if (x == Yellow || y == Yellow)
{
return Yellow;
}
return Green;
}
public static bool operator ==(LaunchStatus x, LaunchStatus y) => x.status == y.status;
public static bool operator !=(LaunchStatus x, LaunchStatus y) => !(x == y);
public override bool Equals(object obj) => obj is LaunchStatus other && this == other;
public override int GetHashCode() => status;
}
public class LaunchStatusTest
{
public static void Main()
{
LaunchStatus okToLaunch = GetFuelLaunchStatus() && GetNavigationLaunchStatus();
Console.WriteLine(okToLaunch ? "Ready to go!" : "Wait!");
}
static LaunchStatus GetFuelLaunchStatus()
{
Console.WriteLine("Getting fuel launch status...");
return LaunchStatus.Red;
}
static LaunchStatus GetNavigationLaunchStatus()
{
Console.WriteLine("Getting navigation launch status...");
return LaunchStatus.Yellow;
}
}
&& 연산자의 단락 동작을 확인합니다.
GetFuelLaunchStatus 메서드가 LaunchStatus.Red를 반환하면 && 연산자의 오른쪽 피연산자는 계산되지 않습니다. 그 조건은 확실히 거짓입니다. 논리 AND의 결과는 오른쪽 피연산자의 값에 의존하지 않습니다. 예제 출력은 다음과 같습니다.
Getting fuel launch status...
Wait!
참고 항목
.NET