Maison > développement back-end > C++ > Pourquoi l'opérateur ternaire échoue-t-il avec des types nullables en C #?

Pourquoi l'opérateur ternaire échoue-t-il avec des types nullables en C #?

Patricia Arquette
Libérer: 2025-01-28 21:56:09
original
899 Les gens l'ont consulté

Why Does the Ternary Operator Fail with Nullable Types in C#?

Les symboles informatiques ternaires et les types vides dans le C #: limiter les détails

Lors du traitement du type de valeur vide, le symbole informatique ternaire (? :) peut avoir des comportements inattendus. Un problème commun est d'essayer d'utiliser le symbole informatique ternaire pour attribuer un caractère entier ou null à la variable entière du canal.

Par exemple, considérez le code suivant:

Dans ce code, le symbole informatique ternaire tente de calculer la bonne expression:
<code class="language-csharp">int? x = GetBoolValue() ? 10 : null;</code>
Copier après la connexion

Parmi eux, Retour à une valeur booléenne, 10 est un littéral entier, Null est une référence vacante. Le compilateur tente de convertir ces valeurs pour correspondre au type de l'expression de gauche, c'est-à-dire
<code class="language-csharp">GetBoolValue() ? 10 : null</code>
Copier après la connexion
.

GetBoolValue() Cependant, il n'y a pas de conversion cachée entre le volume littéral (ne peut pas être vide) et l'entier vide (int?). De même, il n'y a pas de conversion cachée entre null et entier. Cela provoque l'erreur du compilateur:

int? Afin de résoudre ce problème, l'expression droite doit être modifiée pour garantir que les deux branches de l'opérateur à trois-yuan renvoient les valeurs compatibles avec l'expression gauche. Cela peut être réalisé grâce à une conversion implicite ou à une conversion explicite:

<code>无法确定条件表达式的类型,因为整型和<null>之间没有隐式转换。</code>
Copier après la connexion

Grâce à ces modifications, le compilateur peut calculer avec succès la bonne expression et déterminer le type d'expression conditionnelle pour éliminer les erreurs.

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