web-dev-qa-db-fra.com

Pourquoi l'opérateur C # 'est' donne-t-il un résultat correct lors de la comparaison de deux valeurs booléennes et dois-je l'utiliser?

ID a remarqué que cet opérateur is produit les mêmes résultats et compile même la même chose (voir ce gist ) comme == Opérateur. Est-ce une utilisation correcte de l'opérateur is donné que je ne peux voir que des choses liées aux essais de type d'exécution dans les documents?

bool test = false;

if(!test)
{
// some code
}

//OR

if(test is false)
{
// some code
}
7
PontiusTheBarbarian

Il est valide, car il fait partie de la fonctionnalité de correspondance des motifs. Mais comme @jon Skeet répondit déjà, il n'est pas conventionnel de l'utiliser pour vérifier l'égalité avec des variables Bool. En C # 9, son étui d'utilisation courante vérifie plusieurs conditions à la fois, comme

int x = Random.Next(50);
if (x is >5 and <17)
//do something

C'est le sucre syntaxique surtout.

0
Zadir7