Maison > développement back-end > C++ > Pourquoi mon opérateur Ternaire C # échoue-t-il avec des types nullables: `getBoolValue ()? 10: null`?

Pourquoi mon opérateur Ternaire C # échoue-t-il avec des types nullables: `getBoolValue ()? 10: null`?

Barbara Streisand
Libérer: 2025-01-28 22:14:11
original
542 Les gens l'ont consulté

Why Does My C# Ternary Operator Fail with Nullable Types: `GetBoolValue() ? 10 : null`?

C # Types nullables et l'opérateur ternaire: Résolution des incohérences de type

En C #, l'utilisation de l'opérateur ternaire (? :) avec des types nullables (comme int?) peut conduire à l'erreur "Le type d'expression conditionnelle ne peut pas être déterminé ...". Cela se produit lorsque les branches vraies et fausses de l'opérateur ternaire ont des types incompatibles. Par exemple, GetBoolValue() ? 10 : null échoue car 10 est un int et null représente l'absence d'une valeur. Le compilateur ne peut pas décider d'un seul type pour l'expression.

Le problème découle du besoin de l'opérateur ternaire pour un type de retour cohérent. Alors que null peut être affecté à un entier nullable (int?), une plaine int ne peut pas devenir implicitement un int?.

Voici plusieurs façons de corriger ceci:

  1. CAST explicite en entier nullable: jetez le littéral entier à int?:

    <code class="language-csharp">x = GetBoolValue() ? (int?)10 : null;</code>
    Copier après la connexion
  2. Conversion nul explicite: Cast explicitement null à int?:

    <code class="language-csharp">x = GetBoolValue() ? 10 : (int?)null;</code>
    Copier après la connexion
  3. en utilisant le mot-clé default: le mot-clé default fournit un moyen de type type d'obtenir la valeur par défaut pour un type, qui est null pour les types nullables:

    <code class="language-csharp">x = GetBoolValue() ? 10 : default(int?);</code>
    Copier après la connexion

Ces solutions garantissent la cohérence du type, permettant au compilateur de déduire correctement le type d'expression ternaire comme int?, résolvant ainsi l'erreur de compilation. Choisissez la méthode qui convient le mieux à votre style de codage et à vos préférences de lisibilité.

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