Heim >Backend-Entwicklung >C++ >Wie kann ich generische Methoden auf bestimmte numerische Typen in .NET einschränken?

Wie kann ich generische Methoden auf bestimmte numerische Typen in .NET einschränken?

Patricia Arquette
Patricia ArquetteOriginal
2025-02-01 23:21:11205Durchsuche

How Can I Constrain Generic Methods to Specific Numeric Types in .NET?

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!

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