Heim >Backend-Entwicklung >C++ >Kann C# Generika Typ -Argumente auf bestimmte Ganzzahltypen einschränken?

Kann C# Generika Typ -Argumente auf bestimmte Ganzzahltypen einschränken?

Susan Sarandon
Susan SarandonOriginal
2025-02-01 23:26:10130Durchsuche

Can C# Generics Constrain Type Arguments to Specific Integer Types?

c#Generische Methodenbeschränkungen spezifischer numerischer Typen

Gibt es bei der Verwendung von Generika in C#eine Einschränkung, die den Typ -Parameter t nur auf den folgenden Werten typen: INT16, INT32, INT64, UINT16, UINT32 und UINT64 einschränken kann?

Antwort

In .NET 7, eine Schnittstelle, die speziell zur Begrenzung von t auf numerische Typen verwendet wird:

im Namensraum. Um nur den Ganzzahltyp zu akzeptieren, können Sie

verwenden. System.Numerics INumber<T> Berücksichtigung der folgenden -Methoden -Implementierung: IBinaryInteger<T>

wie man Beispiele verwendet: IntegerFunction

<code class="language-csharp">static bool IntegerFunction<T>(T value) where T : IBinaryInteger<T>
{
    return value > T.Zero;
}</code>
Historischer Hintergrund

<code class="language-csharp">Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True</code>
Vor .net 7, C#hat solche Einschränkungen nicht angegeben. Wie Anders Hejlsberg erklärte, ist der Grund, unnötige Komplexität zu vermeiden, und die tatsächlichen Vorteile sind begrenzt.

Für Szenen, die direkt zur Unterstützung von Einschränkungen nicht verfügbar sind, wird empfohlen, alternative Methoden wie Fabrikmodelle oder Strategien zu verwenden.

Das obige ist der detaillierte Inhalt vonKann C# Generika Typ -Argumente auf bestimmte Ganzzahltypen 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