Heim >Backend-Entwicklung >C++ >Kann C# Generika Typ -Argumente auf bestimmte Ganzzahltypen einschränken?
c#Generische Methodenbeschränkungen spezifischer numerischer Typen
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
<code class="language-csharp">static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T> { return value > T.Zero; }</code>Historischer Hintergrund
<code class="language-csharp">Console.WriteLine(IntegerFunction(5)); // True Console.WriteLine(IntegerFunction((sbyte)-5)); // False Console.WriteLine(IntegerFunction((ulong)5)); // True</code>Vor .net 7, C#hat solche Einschränkungen nicht angegeben. Wie Anders Hejlsberg erklärte, ist der Grund, unnötige Komplexität zu vermeiden, und die tatsächlichen Vorteile sind begrenzt.
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!