Dela via


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, , BigIntDouble, String, Bool, Result, Paulioch 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.