Maison > développement back-end > C++ > Comment puis-je contraindre les types génériques dans .NET pour accepter uniquement les types numériques?

Comment puis-je contraindre les types génériques dans .NET pour accepter uniquement les types numériques?

Patricia Arquette
Libérer: 2025-02-01 23:36:13
original
1032 Les gens l'ont consulté

How Can I Constrain Generic Types in .NET to Only Accept Numeric Types?

restreindre les génériques .NET aux types numériques

Les génériques

.NET offrent une flexibilité de type, mais nécessitent souvent des contraintes de type. Un besoin fréquent consiste à limiter les arguments de type générique aux types numériques comme Int16, Int32, Int64, UInt16, UInt32, et UInt64.

La solution avec .net 7

Alors que les versions antérieures manquaient d'une solution directe, .NET 7 introduit INumber<T> (dans System.Numerics) comme l'interface la plus complète pour tous les types numériques. Pour les types entiers spécifiquement, IBinaryInteger<T> est disponible.

Exemple de code: fonction entier

Cet exemple démontre un IntegerFunction en utilisant IBinaryInteger<T>:

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

Utilisation:

Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True
Copier après la connexion

pré-.net 7 approches

Avant .net 7, la réalisation de cette contrainte était plus difficile. Des méthodes comme l'utilisation d'un modèle d'usine avec une classe Calculator<T> ont été suggérées, mais celles-ci ont entraîné un code moins élégant et moins extensible.

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