Heim >Backend-Entwicklung >C++ >Wie kann ich generische Typen in .NET einschränken, um nur numerische Typen zu akzeptieren?

Wie kann ich generische Typen in .NET einschränken, um nur numerische Typen zu akzeptieren?

Patricia Arquette
Patricia ArquetteOriginal
2025-02-01 23:36:13983Durchsuche

How Can I Constrain Generic Types in .NET to Only Accept Numeric Types?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn