Maison >développement back-end >C++ >Comment puis-je renvoyer en toute sécurité les valeurs des méthodes génériques en C# ?

Comment puis-je renvoyer en toute sécurité les valeurs des méthodes génériques en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-09 17:17:40494parcourir

How Can I Safely Return Values from Generic Methods in C#?

Traitement des valeurs de retour des méthodes génériques C#

En C#, lors de la définition d'une méthode générique, si le paramètre de type T est un type valeur (comme int ou structure), renvoyer null provoquera une erreur de compilation, car null ne peut pas être attribué à un type valeur.

Solution

Il existe plusieurs façons de résoudre ce problème :

  • Renvoyer la valeur par défaut : Utilisez default(T) pour renvoyer la valeur par défaut du paramètre de type T. Pour les types référence, null est renvoyé ; pour les entiers, zéro est renvoyé, et ainsi de suite.
  • Contrainte T pour être un type référence : Utilisez la contrainte where T : class pour restreindre le paramètre de type T à un type référence. De cette façon, null peut être renvoyé sans erreur.
  • Contrainte T pour être un type valeur non nullable : Si vous savez que T ne sera jamais un type valeur nullable, vous pouvez utiliser la contrainte where T : struct et renvoyer null à partir d'une méthode avec un retour genre de T?. Cela représente une valeur nulle d’un type de valeur non nulle.

Exemple :

<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 default(T); // 返回类型T的默认值
}</code>

Choisissez la méthode qui correspond le mieux à vos besoins spécifiques et assurez-vous que la valeur de retour est cohérente avec le type et la nullité attendus de T.

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