Espressioni comparative

Confronti di uguaglianza

I confronti di uguaglianza (==) e i confronti di disuguaglianza (!=) sono attualmente limitati ai tipi di dati seguenti: Int, BigInt, BoolDoubleResultString, Pauli, e .Qubit I confronti di uguaglianza dei tipi definiti dall'utente e dei chiamabili non sono attualmente supportati.

Il confronto di uguaglianza per i valori di tipo Qubit valuta se le due espressioni identificano lo stesso qubit. Non esiste alcuna nozione di stato quantistico in Q#; il confronto di uguaglianza, in particolare, non accede, misura o modifica lo stato quantistico dei qubit.

I confronti di uguaglianza per Double i valori possono essere fuorvianti a causa di effetti di arrotondamento. Ad esempio, il confronto seguente restituisce false a causa di errori di arrotondamento: 49.0 * (1.0/49.0) == 1.0.

Il confronto di uguaglianza delle matrici e delle tuple è supportato dai confronti dei relativi elementi e sono supportati solo se tutti i tipi annidati supportano il confronto di uguaglianza.

Il confronto di uguaglianza degli intervalli chiusi è supportato e due intervalli vengono considerati uguali se producono la stessa sequenza di interi. Ad esempio, i due intervalli seguenti

    let r1 = 0..2..5; // generates the sequence 0,2,4
    let r2 = 0..2..4; // generates the sequence 0,2,4

sono considerati uguali. Il confronto di uguaglianza degli intervalli aperti non è supportato.

Confronto quantitativo

Gli operatori less-than (<), less-than-or-equal (<=), greater-than (>) e greater-than-or-equal (>=) definiscono confronti quantitativi. Possono essere applicati solo ai tipi di dati che supportano tali confronti, ovvero gli stessi tipi di dati che possono supportare anche espressioni aritmetiche.