Srovnávací výrazy
Porovnání rovnosti
Porovnání rovnosti (==
) a porovnání nerovnosti (!=
) jsou v současné době omezena na následující datové typy: Int
, BigInt
, Double
, String
, Bool
, Result
, , Pauli
, a Qubit
. Porovnání rovnosti uživatelem definovaných typů a volatelných typů se v současné době nepodporuje.
Porovnání rovnosti pro hodnoty typu Qubit
vyhodnotí, jestli oba výrazy identifikují stejný qubit. V porovnání rovnosti neexistuje žádný pojem o kvantovém stavu Q#, zejména nedochází k přístupu, měření ani úpravě kvantového stavu qubitů.
Porovnání rovnosti pro Double
hodnoty mohou být zavádějící z důvodu zaokrouhlování.
Například následující porovnání se vyhodnotí false
jako kvůli chybám zaokrouhlení: 49.0 * (1.0/49.0) == 1.0
.
Porovnání rovnosti polí a řazených kolekcí členů jsou podporovány porovnáním jejich položek a jsou podporovány pouze v případě, že všechny jejich vnořené typy podporují porovnání rovnosti.
Porovnání rovnosti blízkých oblastí je podporováno a dvě oblasti se považují za stejné, pokud vytvářejí stejnou sekvenci celých čísel. Například následující dvě oblasti
let r1 = 0..2..5; // generates the sequence 0,2,4
let r2 = 0..2..4; // generates the sequence 0,2,4
jsou považovány za rovnocenné. Porovnání rovnosti otevřených rozsahů není podporováno.
Kvantitativní porovnání
Operátory menší než (<
), menší než nebo rovno (<=
), větší než (>
) a větší než nebo rovno (>=
) definují kvantitativní porovnání. Lze je použít pouze pro datové typy, které podporují taková porovnání, tj. stejné datové typy, které mohou také podporovat aritmetické výrazy.