Gibt es bei der Verwendung von Generika in C#eine Einschränkung, die den Typ -Parameter t nur auf den folgenden Werten typen: INT16, INT32, INT64, UINT16, UINT32 und UINT64 einschränken kann?
Antwort
In .NET 7, eine Schnittstelle, die speziell zur Begrenzung von t auf numerische Typen verwendet wird:
im Namensraum. Um nur den Ganzzahltyp zu akzeptieren, können Sie verwenden. System.Numerics
INumber<T>
Berücksichtigung der folgenden -Methoden -Implementierung: IBinaryInteger<T>
wie man Beispiele verwendet: 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
Für Szenen, die direkt zur Unterstützung von Einschränkungen nicht verfügbar sind, wird empfohlen, alternative Methoden wie Fabrikmodelle oder Strategien zu verwenden.
Das obige ist der detaillierte Inhalt vonKann C# Generika Typ -Argumente auf bestimmte Ganzzahltypen einschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!