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; }
Console.WriteLine(IntegerFunction(5)); // True Console.WriteLine(IntegerFunction((sbyte)-5)); // False Console.WriteLine(IntegerFunction((ulong)5)); // True
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!