Maison >développement back-end >C++ >Les contraintes de méthode générique C # peuvent-elles restreindre les arguments de type à des types numériques spécifiques?

Les contraintes de méthode générique C # peuvent-elles restreindre les arguments de type à des types numériques spécifiques?

Susan Sarandon
Susan Sarandonoriginal
2025-02-01 23:31:11325parcourir

Can C# Generic Method Constraints Restrict Type Arguments to Specific Numeric Types?

C # La contrainte de méthode générique ne peut être limitée qu'aux types numériques?

Introduction

Les libres permettent aux programmeurs de définir les types qui peuvent fonctionner sur plusieurs types de données. Cependant, il peut parfois être nécessaire de limiter le type de type générique. Cette question explore s'il existe une méthode qui peut limiter les paramètres génériques à uniquement des types de valeur spécifiques. Les contraintes des limites de type générique

C #

Les mots clés permettent aux développeurs de spécifier les contraintes des paramètres génériques. La contrainte peut être utilisée pour garantir que les paramètres de type implémentent une interface spécifique ou hériter de la classe de base spécifique. L'interface numérique existante

where Malheureusement, C # ne fournit pas d'interface spécialisée dans les types INT16, INT32, INT64, UINT16, UINT32 et Uint64. Par conséquent, le mot-clé ne peut pas être utilisé directement pour limiter les paramètres génériques dans ces types spécifiques.

Méthode alternative

En tant qu'alternative, veuillez considérer les méthodes suivantes:

where

L'interface : Net 7 a introduit l'interface dans l'espace de nom

. Cette interface indique que tous les types entiers binaires peuvent être utilisés pour limiter le paramètre de type à un type entier.

Mode d'usine
    : Comme Anders Hejlsberg le recommande, vous pouvez utiliser le mode d'usine pour créer une matrice prenant en charge une variété de types numériques. Dans cette méthode, une interface
  • est définie et la matrice utilise l'instance de cette interface comme paramètre. IBinaryInteger Classe stratégique : Un autre choix consiste à utiliser la mise en œuvre des interfaces publiques et à fournir une classe stratégique qui fournit une implémentation spécifique. Ces stratégies peuvent être transmises à la matrice pour permettre le support de différents types numériques. System.Numerics IBinaryInteger<T>
  • Conclusion
  • Bien que C # ne prenne pas directement en charge la limitation des paramètres génériques comme type de valeur spécifique par contrainte, il peut utiliser l'interface Calculator<T>, le mode d'usine et la méthode alternative de stratégie pour atteindre les fonctions requises.

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