Maison > développement back-end > C++ > Comment résoudre les erreurs du compilateur lors de l'utilisation de l'affectation conditionnelle avec des types nullables en C# ?

Comment résoudre les erreurs du compilateur lors de l'utilisation de l'affectation conditionnelle avec des types nullables en C# ?

Linda Hamilton
Libérer: 2025-01-16 16:32:09
original
805 Les gens l'ont consulté

How to Resolve Compiler Errors When Using Conditional Assignment with Nullable Types in C#?

Erreur du compilateur lors de l'utilisation de types nullables pour l'affectation conditionnelle en C#

En C#, l'affectation utilisant l'opérateur conditionnel (?) provoque parfois une erreur du compilateur lorsque vous travaillez avec des types nullables (tels que Nullable<int>). Un exemple courant consiste à essayer d'attribuer le résultat d'une expression conditionnelle à une variable nullable, comme indiqué dans le code suivant :

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

Ce code attribue null lorsque employeeNumberTextBox.Text est vide et attribue une valeur int lorsqu'il n'est pas vide. Cependant, le compilateur se plaint "Impossible d'effectuer une conversion implicite entre 'null' et 'int'".

Analyse des causes

Le problème est que les opérateurs conditionnels ne prennent en compte que le type de valeurs vraies et fausses, et non le contexte dans lequel l'expression est utilisée. Dans ce cas, le compilateur ne peut pas déterminer le type de l’expression résultante car elle contient un null et un int, qui sont des types incompatibles.

Solution

Pour résoudre ce problème, vous pouvez convertir manuellement l'une des valeurs en un type nullable :

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

En convertissant explicitement null en (int?)null, vous fournissez au compilateur les informations de type nécessaires pour analyser l'expression et effectuer l'affectation. Alternativement, vous pouvez convertir la valeur int en (int?) si nécessaire.

Cette solution vous permet d'utiliser des types nullables et des opérateurs conditionnels de manière plus élégante, notamment lors de l'initialisation de propriétés dans les initialiseurs d'objets.

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