Maison > développement back-end > C++ > Comment puis-je limiter les méthodes génériques à des types numériques spécifiques dans .NET?

Comment puis-je limiter les méthodes génériques à des types numériques spécifiques dans .NET?

Patricia Arquette
Libérer: 2025-02-01 23:21:11
original
202 Les gens l'ont consulté

How Can I Constrain Generic Methods to Specific Numeric Types in .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:

static bool IsPositiveInteger<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}
Copier après la connexion

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!

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