Vergleichsausdrücke
Übereinstimmungsvergleiche
Gleichheitsvergleiche (==
) und Ungleichheitsvergleiche (!=
) sind derzeit auf die folgenden Datentypen beschränkt: Int
, BigInt
, Double
, String
, Bool
, Result
, Pauli
und Qubit
Gleichheitsvergleiche von benutzerdefinierten Typen und Aufrufbaren werden derzeit nicht unterstützt.
Beim Gleichheitsvergleich für Werte vom Typ Qubit
wird ausgewertet, ob die beiden Ausdrücke das gleiche Qubit identifizieren. Es gibt kein Konzept eines Quantenzustands in Q#. Der Gleichheitsvergleich greift insbesondere nicht auf den Quantenzustand der Qubits zu, und der Quantenzustand der Qubits wird nicht gemessen oder geändert.
Gleichheitsvergleiche für Werte vom Typ Double
können aufgrund von Rundungseffekten irreführend sein.
Der folgende Vergleich ergibt z.B. aufgrund von Rundungsfehlern false
: 49.0 * (1.0/49.0) == 1.0
.
Gleichheitsvergleiche von Arrays und Tupeln werden durch Vergleiche ihrer Elemente unterstützt und nur unterstützt, wenn alle geschachtelten Typen den Gleichheitsvergleich unterstützen.
Der Gleichheitsvergleich von Nahbereichsbereichen wird unterstützt, und zwei Bereiche gelten als gleich, wenn sie dieselbe Sequenz von ganzen Zahlen erzeugen. Beispiel: Die folgenden beiden Bereiche
let r1 = 0..2..5; // generates the sequence 0,2,4
let r2 = 0..2..4; // generates the sequence 0,2,4
gelten als gleich. Gleichheitsvergleiche von offenen Bereichen werden nicht unterstützt.
Quantitativer Vergleich
Die Operatoren kleiner als (<
), kleiner als oder gleich (<=
), größer als (>
) und größer als oder gleich (>=
) definieren quantitative Vergleiche. Sie können nur auf Datentypen angewendet werden, die solche Vergleiche unterstützen. Dies sind die gleichen Datentypen, die auch arithmetische Ausdrücke unterstützen können.