Heim > Backend-Entwicklung > C++ > Wie wirkt sich die NULL-Zulässigkeit generischer Einschränkungen auf die Überladung von C#-Methoden aus?

Wie wirkt sich die NULL-Zulässigkeit generischer Einschränkungen auf die Überladung von C#-Methoden aus?

Patricia Arquette
Freigeben: 2024-12-30 05:06:09
Original
595 Leute haben es durchsucht

How Does Generic Constraint Nullability Affect C# Method Overloading?

Einschränkungen und Überladung

In C# können generische Einschränkungen auf Typparameter angewendet werden, um die verwendbaren Typen einzuschränken. Wenn jedoch eine Einschränkung für einen Parameter festgelegt wird, wirkt sich dies auf den Prozess der Überladungsauflösung aus.

Betrachten Sie den folgenden Code:

static void Foo<T>(T a) where T : struct { } // 1

static void Foo<T>(T? a) where T : struct { } // 2
Nach dem Login kopieren

Diese beiden Funktionen überladen Foo und werden anhand der Nullbarkeit unterschieden von T. Der Versuch, eine dritte Überladung mit einer Einschränkung für Klassentypen hinzuzufügen, schlägt jedoch fehl:

static void Foo<T>(T a) where T : class { } // 3
Nach dem Login kopieren

Dies liegt daran, dass die Parameter dieser Funktion mit der übereinstimmen Parameter von Foo(T a) wobei T : struct. Um dies zu umgehen, müssen wir die Einschränkung auf einen anderen Parameter setzen:

class RequireStruct<T> where T : struct { }
class RequireClass<T> where T : class { }

static void Foo<T>(T a, RequireStruct<T> ignore = null) where T : struct { } // 1
static void Foo<T>(T? a) where T : struct { } // 2
static void Foo<T>(T a, RequireClass<T> ignore = null) where T : class { } // 3
Nach dem Login kopieren

Jetzt kann Foo überladen werden, um alle drei Fälle zu verarbeiten:

  • Einfache Werttypen (z. B. int) werden Foo(T a, RequireStructignore = null) zugeordnet, wobei T: struct.
  • Nullable-Werttypen (z. B. int?) werden auf Foo(T? a) abgebildet, wobei T: struct.
  • Referenztypen (z. B. string) werden auf Foo(T? a) abgebildet. T>(T a, RequireClass ignorieren = null) wobei T: Klasse.

Das obige ist der detaillierte Inhalt vonWie wirkt sich die NULL-Zulässigkeit generischer Einschränkungen auf die Überladung von C#-Methoden aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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