Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge aus, um die neuesten Funktionen, Sicherheitsupdates und technischen Support zu nutzen.
Der Operator true
gibt den bool-Wert true
zurück, um anzugeben, dass der Operand definitiv „true“ ist, während der Operator false
den bool
-Wert true
zurückgibt, um anzugeben, dass der Operand definitiv „false“ ist.
Beachten Sie, dass ein Typ, der beide Operatoren true
und false
implementiert, diese Semantik befolgen muss:
true
aufgelöst. Der Operator true
gibt true
zurück, wenn das Objekt true
ist. Die Antwort lautet „Ja, dieses Objekt ist true“.false
aufgelöst. Der Operator false
gibt true
zurück, wenn das Objekt false
ist. Die Antwort lautet „Ja, dieses Objekt ist false“.Es ist nicht garantiert, dass sich die Operatoren true
und false
gegenseitig ergänzen. Dies bedeutet, dass sowohl der Operator true
als auch der Operator false
möglicherweise den bool
-Wert false
für den gleichen Operanden zurückgeben. Wenn ein Typ einen dieser beiden Operatoren definiert, muss er auch den anderen Operator definieren.
Tipp
Verwenden Sie den Typ bool?
, wenn Sie die dreiwertige Logik unterstützen müssen (z. B. wenn Sie mit Datenbanken arbeiten, die einen dreiwertigen booleschen Typ unterstützen). C# stellt die &
- und |
-Operatoren zur Verfügung, die die dreiwertige Logik mit den bool?
-Operanden unterstützen. Weitere Informationen finden Sie im Abschnitt Boolesche logische Operatoren, die NULL-Werte zulassen im Artikel Boolesche logische Operatoren.
Ein Typ mit dem definierten true
-Operator kann der Typ des Ergebnisses eines steuernden bedingten Ausdrucks in if-, do-, while- und for-Anweisungen und im bedingten Operator ?:
sein. Weitere Informationen finden Sie im Abschnitt Boolescher Ausdruck der C#-Sprachspezifikation.
Wenn ein Typ mit den definierten Operatoren true
und false
den logischen OR-Operator |
oder den logischen AND-Operator &
in einer bestimmten Weise überlädt, kann der bedingte logische OR-Operator ||
bzw. der bedingte logische AND-Operator &&
für Operanden dieses Typs ausgewertet werden. Weitere Informationen finden Sie im Abschnitt Benutzerdefinierte bedingte logische Operatoren der C#-Sprachspezifikation.
Das folgende Beispiel zeigt den Typen, der sowohl true
- als auch false
-Operatoren definiert. Außerdem überlädt der Typ den logischen AND-Operator &
so, dass der Operator &&
auch für die Operanden dieses Typs ausgewertet werden kann.
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;
}
}
Beachten Sie das kurzschließende Verhalten des &&
-Operators. Wenn die GetFuelLaunchStatus
-Methode LaunchStatus.Red
zurückgibt, wird der rechte Operand des &&
-Operators nicht ausgewertet. Der Grund dafür ist, dass LaunchStatus.Red
definitiv „false“ ist. Dann hängt das Ergebnis des logischen AND-Operators nicht vom Wert des rechten Operanden ab. Im Beispiel wird Folgendes ausgegeben:
Getting fuel launch status...
Wait!
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrieren