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
Freigeben: 2025-02-01 23:36:13
Original
1057 Leute haben es durchsucht

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>

static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}
Nach dem Login kopieren
Verwendung:

Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage