Maison > développement back-end > C++ > Les types de valeur en C# peuvent-ils être comparés à Null ?

Les types de valeur en C# peuvent-ils être comparés à Null ?

Linda Hamilton
Libérer: 2025-01-16 18:24:14
original
655 Les gens l'ont consulté

Can Value Types in C# Be Compared to Null?

Explication détaillée de la comparaison entre les types de valeur et Null en C#

En C#, bien qu'il soit généralement admis que les types de valeur (tels que les entiers) ne peuvent pas être nuls, ils peuvent en fait être comparés à des valeurs nulles. Ce comportement peut prêter à confusion pour les développeurs, comme le montre l'extrait de code suivant :

<code class="language-csharp">Int32 x = 1;
if (x == null)
{
    Console.WriteLine("What the?");
}</code>
Copier après la connexion

Ce code contredit notre attente selon laquelle x ne peut pas être nul, puisque null représente un objet à valeur non définie. Cependant, le compilateur ne renvoie pas d’erreur, ce qui nous fait remettre en question la validité de cette comparaison.

L'explication réside dans la manière unique dont les opérateurs sont résolus en C#. Dans ce cas, le compilateur identifie deux surcharges de l'opérateur == qui peuvent s'appliquer :

  1. == opérateur pour les entiers nullables (Nullable)
  2. Entier standard == opérateur (Int32)

x et null sont tous deux implicitement convertibles en entiers nullables (Nullable). Étant donné que l'analyse des opérateurs favorise des opérateurs plus spécifiques, l'opérateur entier nullable (== pour Nullable) est choisi et la comparaison est toujours évaluée comme fausse.

Ce comportement est cohérent avec les modèles qui permettent de comparer les types valeur avec d'autres types primitifs. Par exemple, la comparaison x == 12,6 (où x est un entier) donne également toujours faux car l'entier x est implicitement convertible en un nombre à virgule flottante double précision et la comparaison s'effectue entre deux nombres à virgule flottante double précision. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal