Maison > développement back-end > C++ > Comment gérer le retour de Null à partir de méthodes génériques en C# ?

Comment gérer le retour de Null à partir de méthodes génériques en C# ?

Patricia Arquette
Libérer: 2025-01-09 17:07:42
original
135 Les gens l'ont consulté

How to Handle Returning Null from Generic Methods in C#?

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>
Copier après la connexion

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 :

  1. 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.

  2. 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.

  3. 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!

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