Freigeben über


Vergleichsausdrücke

Gleichheitsvergleiche

Gleichheitsvergleiche (==) und Ungleichheitsvergleiche (!=) sind derzeit auf die folgenden Datentypen beschränkt: Int, BigInt, Double, String, Bool, Result, Pauliund Qubit. Gleichheitsvergleiche von struct Typen und Aufrufablen werden derzeit nicht unterstützt.

Der Gleichheitsvergleich für Werte vom Typ Qubit wertet aus, ob die beiden Ausdrücke denselben Qubit identifizieren. Es gibt keine Vorstellung von einem Quantenzustand in Q#; Der Gleichheitsvergleich nicht Zugriff, Messung oder Änderung des Quantenzustands der Qubits.

Gleichheitsvergleiche für Double Werte können aufgrund von Rundungseffekten irreführend sein. Der folgende Vergleich wird z. B. aufgrund von Rundungsfehlern als false ausgewertet: 49.0 * (1.0/49.0) == 1.0.

Der Gleichheitsvergleich von Arrays und Tupeln wird durch Vergleiche ihrer Elemente unterstützt und nur unterstützt, wenn alle geschachtelten Typen den Gleichheitsvergleich unterstützen.

Der Gleichheitsvergleich von schließenden Bereichen wird unterstützt, und zwei Bereiche werden als gleich angesehen, wenn sie dieselbe Sequenz von ganzzahligen Zahlen erzeugen. Beispielsweise 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

sind gleich. Der Gleichheitsvergleich von offenen Bereichen wird nicht unterstützt.

Quantitativer Vergleich

Die Operatoren kleiner als (<), kleiner als oder gleich (<=), größer als (>) und größer als-oder gleich (>=) quantitative Vergleiche definieren. Sie können nur auf Datentypen angewendet werden, die solche Vergleiche unterstützen, d. h. dieselben Datentypen, die auch arithmetischen Ausdrückeunterstützen können.