Maison > développement back-end > C++ > Comment gérer les affectations Nullables avec des opérateurs conditionnels en C# ?

Comment gérer les affectations Nullables avec des opérateurs conditionnels en C# ?

Patricia Arquette
Libérer: 2025-01-16 16:35:19
original
130 Les gens l'ont consulté

How to Handle Nullable Assignments with Conditional Operators in C#?

Utilisez des opérateurs conditionnels pour gérer les affectations nullables en C#

Le type Nullable, représenté par Nullable<T>, est utilisé pour représenter une valeur qui peut ou non avoir une valeur valide. Certains développeurs peuvent rencontrer des difficultés avec les opérateurs conditionnels lors de l'attribution de valeurs nullables.

Problèmes avec les types nullables et les opérateurs conditionnels

L'opérateur conditionnel

, généralement noté ?:, évalue une condition et attribue une valeur différente en fonction de sa valeur de vérité. Cependant, si l'une des valeurs attribuées est un type nullable et que l'autre ne l'est pas, le compilateur générera une erreur en raison d'une incompatibilité de type.

Considérons l'exemple suivant :

<code class="language-csharp">EmployeeNumber =
    string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? null
    : Convert.ToInt32(employeeNumberTextBox.Text);</code>
Copier après la connexion

Ici, EmployeeNumber est Nullable<int>, et employeeNumberTextBox.Text est une chaîne. L'attribution de null à un type nullable est valide, mais la conversion d'une chaîne en int ne l'est pas. Le compilateur ne peut pas déduire correctement le type d’expression.

L'opérateur de coalescence nul n'est pas une solution viable

L'opérateur de coalescence

null (??) ne peut pas être utilisé ici car une conversion de employeeNumberTextBox.Text en null est requise lorsque employeeNumberTextBox.Text n'est pas int.

Convertir en type nullable

Pour résoudre ce problème, toute valeur attribuée dans l'opérateur conditionnel doit être explicitement convertie en un type nullable. Cela permet au compilateur de résoudre correctement les types d'expression :

<code class="language-csharp">EmployeeNumber =
    string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? (int?)null
    : Convert.ToInt32(employeeNumberTextBox.Text);</code>
Copier après la connexion

ou :

<code class="language-csharp">EmployeeNumber =
    string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? null
    : (int?)Convert.ToInt32(employeeNumberTextBox.Text);</code>
Copier après la connexion

Cela permet des affectations élégantes et concises lors de l'utilisation de types nullables et d'opérateurs conditionnels.

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