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
Freigeben: 2025-02-01 23:26:10
Original
188 Leute haben es durchsucht

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

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

Console.WriteLine(IntegerFunction(5));         // True
Console.WriteLine(IntegerFunction((sbyte)-5)); // False
Console.WriteLine(IntegerFunction((ulong)5));  // True
Nach dem Login kopieren
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!

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