Maison >développement back-end >C++ >Comment gérer les affectations Nullables avec des opérateurs conditionnels en 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>
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 coalescencenull (??
) 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>
ou :
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? null : (int?)Convert.ToInt32(employeeNumberTextBox.Text);</code>
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!