Jämförande uttryck
Likhetsjämförelser
Likhetsjämförelser (==
) och olikhetsjämförelser (!=
) är för närvarande begränsade till följande datatyper: Int
, , BigInt
Double
, String
, Bool
, Result
, Pauli
och Qubit
. Likhetsjämförelser av användardefinierade typer och anropbara objekt stöds för närvarande inte.
Likhetsjämförelse för värden av typen Qubit
utvärderar om de två uttrycken identifierar samma qubit. Det finns ingen uppfattning om ett kvanttillstånd i Q#. Likhetsjämförelse har i synnerhet inte åtkomst till, mäter eller ändrar kvantbitarnas kvanttillstånd.
Likhetsjämförelser för Double
värden kan vara missvisande på grund av avrundningseffekter.
Följande jämförelse utvärderas till exempel på false
grund av avrundningsfel: 49.0 * (1.0/49.0) == 1.0
.
Likhetsjämförelse mellan matriser och tupplar stöds av jämförelser av deras objekt och stöds endast om alla deras kapslade typer stöder likhetsjämförelse.
Likhetsjämförelse mellan närslutna intervall stöds och två intervall anses vara lika om de genererar samma heltalssekvens. Följande två intervall
let r1 = 0..2..5; // generates the sequence 0,2,4
let r2 = 0..2..4; // generates the sequence 0,2,4
anses vara lika. Likhetsjämförelse av öppna intervall stöds inte.
Kvantitativ jämförelse
Operatorerna mindre än (<
), mindre än eller lika med (<=
), större än (>
) och större än eller lika med (>=
) definierar kvantitativa jämförelser. De kan bara tillämpas på datatyper som stöder sådana jämförelser, det vill sa att de är samma datatyper som också har stöd för aritmetiska uttryck.