Maison > développement back-end > C++ > Les génériques C # peuvent-ils limiter les arguments de type à des types entiers spécifiques?

Les génériques C # peuvent-ils limiter les arguments de type à des types entiers spécifiques?

Susan Sarandon
Libérer: 2025-02-01 23:26:10
original
188 Les gens l'ont consulté

Can C# Generics Constrain Type Arguments to Specific Integer Types?

C # Contraintes de la méthode générique de types numériques spécifiques

Lorsque vous utilisez des génériques en C #, y a-t-il une contrainte qui peut limiter le paramètre de type T uniquement le type de valeurs suivant: int16, int32, int64, uint16, uint32 et uint64?

Réponse

Dans .NET 7, une interface spécialement utilisée pour limiter T aux types numériques:

dans l'espace de nom. Pour accepter uniquement le type entier, vous pouvez utiliser

. System.Numerics INumber<T> Compte tenu de l'implémentation de méthode suivante : IBinaryInteger<T>

Comment utiliser des exemples: IntegerFunction

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

Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True
Copier après la connexion
Avant .net 7, C # n'a pas fourni de telles contraintes. Comme l'a expliqué Anders Hejlsberg, la raison est d'éviter la complexité inutile et les avantages réels sont limités.

Pour les scènes qui ne sont pas disponibles directement pour prendre en charge les contraintes, il est recommandé d'utiliser des méthodes alternatives, telles que des modèles ou des stratégies d'usine.

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