Maison >développement back-end >C++ >Comment puis-je limiter les méthodes génériques à des types numériques spécifiques dans .NET?
restreindre les méthodes génériques à des types numériques spécifiques dans .NET
Cet article aborde le défi de limiter les arguments de type de méthode générique à des types numériques spécifiques dans .NET, tels que Int16
, Int32
, Int64
, UInt16
, UInt32
, et UInt64
.
.NET moderne (7 et plus tard):
.net 7 introduit l'interface INumber<T>
, englobant tous les types numériques. Pour les types entiers spécifiquement, utilisez IBinaryInteger<T>
. Cela fournit une solution concise:
<code class="language-csharp">static bool IsPositiveInteger<T>(T value) where T : IBinaryInteger<T> { return value > T.Zero; }</code>
Versions .NET plus anciennes (pré-.net 7):
Avant .NET 7, les contraintes directes à des types numériques spécifiques n'étaient pas disponibles. Les solutions de contournement comprennent:
1. Modèle d'usine:
Utilisez une usine pour créer des instances d'une classe de calculatrice personnalisée. Cette calculatrice gérerait les opérations de type numérique spécifiques, offrant une flexibilité pour différents types.
2. Approche basée sur la politique:
Définir les classes de politique implémentant une interface commune. La méthode générique accepte une instance de stratégie comme paramètre, permettant une instanciation avec divers types numériques. Cette approche favorise la séparation plus propre des préoccupations.
Cette explication révisée maintient les informations originales tout en améliorant la clarté et le flux.
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!