Maison >développement back-end >C++ >Comment puis-je restreindre les arguments de méthode générique aux types numériques en C #?

Comment puis-je restreindre les arguments de méthode générique aux types numériques en C #?

DDD
DDDoriginal
2025-02-01 23:16:09835parcourir

How Can I Restrict Generic Method Arguments to Numeric Types in C#?

C # Méthode générique Limite de type numérique

La méthode générique en C # est un outil puissant pour les opérations abstraites et complexes entre différents types. Cependant, les mots clés traditionnels permettent uniquement les interfaces ou les contraintes d'héritage. Cette limite peut devenir un problème lorsque vous souhaitez limiter le paramètre à un type spécifique (comme le type d'élément de base numérique).

.net 7 a introduit ibinaryinteger where

Avec l'émergence de .NET 7, une solution à ce problème est apparue: System.umerics nommé Interface dans l'espace de nom. Cette interface contient tous les types entiers qui vous permettent de retenir la méthode générique en tant qu'int16, int32, int64, uint16, uint32 et uint64.

à l'aide d'IbinaryInteger

Implémentation d'IntegerFunction IBinaryInteger<Tself>

Par exemple, compte tenu de la suivante , si le paramètre passé est positif, renvoyez vrai.

Exemple d'utilisation

IntegerFunction

En utilisant le nouveau , nous pouvons facilement vérifier la nature positive et négative des différents types entiers:
<code class="language-csharp">static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}</code>

Revue d'histoire

Avant l'introduction de , C # manque de support explicite pour limiter les paramètres génétiques en tant que type numérique spécifique. Au lieu de cela, les programmeurs peuvent aider à modifier des méthodes, telles que les modèles d'usine ou la stratégie. Cependant, ces méthodes obligent les utilisateurs à rédiger du code supplémentaire et à augmenter la complexité. IntegerFunction

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