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
Susan Sarandonoriginal
2025-02-01 23:26:10213parcourir

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

<code class="language-csharp">static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}</code>
arrière-plan historique

<code class="language-csharp">Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True</code>
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:
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