Heim >Backend-Entwicklung >C++ >Wie kann ich generische Typen in .NET einschränken, um nur numerische Typen zu akzeptieren?
Einschränkung von .NET Generics auf numerische Typen
.NET Generics bieten Typflexibilität, erfordern jedoch häufig Typeinschränkungen. Ein häufiger Bedarf besteht darin, generische Argumente vom Typ Typ auf numerische Typen wie Int16
, Int32
, Int64
, UInt16
, UInt32
und UInt64
zu beschränken.
Die Lösung mit .NET 7
Während frühere Versionen eine direkte Lösung fehlten, führt .NET 7 als die umfassendste Schnittstelle für alle numerischen Typen ein (in INumber<T>
) als die umfassendste Schnittstelle. Für ganzzahlige Typen ist System.Numerics
verfügbar. IBinaryInteger<T>
Code Beispiel: Integer -Funktion
Dieses Beispiel zeigt ein verwendet IntegerFunction
: IBinaryInteger<T>
<code class="language-csharp">static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T> { return value > T.Zero; }</code>Verwendung:
<code class="language-csharp">Console.WriteLine(IntegerFunction(5)); // True Console.WriteLine(IntegerFunction((sbyte)-5)); // False Console.WriteLine(IntegerFunction((ulong)5)); // True</code>
Pre -.net 7-Ansätze
Vor .net 7 war es schwieriger, diese Einschränkung zu erreichen. Es wurden Methoden wie die Verwendung eines Werksmusters mit einer -Klasse vorgeschlagen, diese führten jedoch zu einem weniger eleganten und weniger erweiterbaren Code. Calculator<T>
Das obige ist der detaillierte Inhalt vonWie kann ich generische Typen in .NET einschränken, um nur numerische Typen zu akzeptieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!