Heim >Backend-Entwicklung >C++ >Wie kann ich generische Methoden auf bestimmte numerische Typen in .NET einschränken?
generische Methoden auf bestimmte numerische Typen in .NET
einschränken Dieser Artikel befasst sich mit der Herausforderung, generische Methodenargumente auf bestimmte numerische Typen in .NET einzuschränken, z. B. Int16
, Int32
, Int64
, UInt16
, UInt32
und UInt64
. 🎜>
modern .net (7 und später):
.NET 7 führt die -Schinschnittstelle ein und umfasst alle numerischen Typen. Verwenden Sie für ganzzahlige Typen INumber<T>
. Dies liefert eine kurze Lösung: IBinaryInteger<T>
<code class="language-csharp">static bool IsPositiveInteger<T>(T value) where T : IBinaryInteger<T> { return value > T.Zero; }</code>
ältere .NET-Versionen (Pre-.NET 7):
Vor .NET 7 waren direkte Einschränkungen für bestimmte numerische Typen nicht verfügbar. Zu den Workarounds gehören:
1. Fabrikmuster:
Verwenden Sie eine Fabrik, um Instanzen einer benutzerdefinierten Taschenrechnerklasse zu erstellen. Dieser Taschenrechner würde die spezifischen numerischen Typvorgänge verarbeiten und Flexibilität für verschiedene Typen bieten.
2. Richtlinienbasierter Ansatz:
Richtlinienklassen definieren, die eine gemeinsame Schnittstelle implementieren. Die generische Methode akzeptiert eine Richtlinieninstanz als Parameter, wodurch die Instanziierung mit verschiedenen numerischen Typen ermöglicht wird. Dieser Ansatz fördert die sauberere Trennung von Bedenken.Diese überarbeitete Erklärung behält die ursprünglichen Informationen bei gleicher Verbesserung der Klarheit und des Flusses.
Das obige ist der detaillierte Inhalt vonWie kann ich generische Methoden auf bestimmte numerische Typen in .NET einschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!