Renvoi d'une valeur nulle dans la méthode générique C#
Lors de la création de méthodes génériques, les développeurs peuvent rencontrer le problème du renvoi de valeurs nulles à partir de méthodes avec des paramètres de type génériques. Dans l'extrait de code fourni :
<code class="language-csharp">static T FindThing<T>(IList collection, int id) where T : IThing, new() { foreach (T thing in collection) { if (thing.Id == id) return thing; } return null; // 错误:无法将 null 转换为类型参数 'T' }</code>
Le compilateur générera l'erreur "Impossible de convertir null en paramètre de type 'T' car il peut s'agir d'un type valeur. Pensez à utiliser 'default(T)' à la place." En effet, vous ne pouvez pas renvoyer directement null pour un type générique contenant un type valeur (struct).
Résolution des erreurs
Pour résoudre ce problème, les développeurs disposent de trois options :
Renvoyer la valeur par défaut : Utilisez le mot-clé default
ou default(T)
pour renvoyer la valeur par défaut de type T. Cela renvoie null pour les types référence, 0 pour les entiers et ' pour les caractères ', etc.
Restriction des types génériques : Si une méthode peut être limitée à renvoyer uniquement des types référence, vous pouvez ajouter une contrainte where T : class
. Cela permet de renvoyer directement null.
Renvoyer les valeurs nulles sous forme de valeurs nullables : Si une méthode peut être limitée à renvoyer uniquement des types de valeurs non nulles, la contrainte where T : struct
peut être utilisée. Dans ce cas, null peut être renvoyé comme valeur null d’un type valeur nullable.
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!