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
Linda Hamiltonoriginal
2025-01-16 16:32:09759parcourir

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>

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>

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!

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