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
Mary-Kate Olsenoriginal
2025-01-28 21:51:10135parcourir

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.

<code class="language-csharp">int? x = GetBoolValue() ? 10 : null; // 错误</code>
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.

<code class="language-csharp">GetBoolValue() ? 10 : null</code>
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 ?:

<code class="language-csharp">int? x = GetBoolValue() ? (int?)10 : null; // 将10转换为int?</code>

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

<code class="language-csharp">int? x = GetBoolValue() ? 10 : (int?)null; // 将null转换为int?</code>

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:
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