Maison > développement back-end > C++ > Pourquoi est `? 10: NULL` interdit dans les opérateurs ternaires C # avec des types nullables?

Pourquoi est `? 10: NULL` interdit dans les opérateurs ternaires C # avec des types nullables?

Mary-Kate Olsen
Libérer: 2025-01-28 21:51:10
original
204 Les gens l'ont consulté

Why is `? 10 : null` Forbidden in C# Ternary Operators with Nullable Types?

C # Computing ternaire et type vide: pourquoi

signaler une erreur? ? 10 : null Lorsque vous utilisez le type disponible en C #, la cohérence du type dans l'expression est très importante. Le caractère informatique ternaire (? :) Évaluer les deux expressions en fonction de la condition.

Considérez le fragment de code suivant:

Ici, nous essayons d'attribuer INT et NULL à la variable INT du câble X. Cela peut entraîner des erreurs de compilateurs, car il n'y a pas de conversion cachée entre ces deux types.

int? x = GetBoolValue() ? 10 : null; // 错误
Copier après la connexion
Le compilateur essaie d'abord d'évaluer la bonne expression:

Le littéral 10 est un type int, et Null est un type vide. Il n'y a pas de conversion cachée entre les deux, donc des erreurs se produisent.

GetBoolValue() ? 10 : null
Copier après la connexion
Afin de résoudre ce problème, nous pouvons effectuer une conversion explicite pour assurer la cohérence du type:

ou, nous pouvons convertir la surface du mot vide en int ?:

int? x = GetBoolValue() ? (int?)10 : null; // 将10转换为int?
Copier après la connexion

ou, nous pouvons utiliser le mot-clé par défaut:

int? x = GetBoolValue() ? 10 : (int?)null; // 将null转换为int?
Copier après la connexion

En assurant la cohérence du type, nous pouvons éviter l'erreur du compilateur et maintenir l'exhaustivité du type.

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!

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