Heim > Backend-Entwicklung > C++ > Wie können wir die Typ-abhängige Logik in C# ohne direkte Funktion 'Schalttyp' implementieren?

Wie können wir die Typ-abhängige Logik in C# ohne direkte Funktion 'Schalttyp' implementieren?

Linda Hamilton
Freigeben: 2025-01-28 15:16:09
Original
240 Leute haben es durchsucht

How Can We Implement Type-Dependent Logic in C# Without a Direct

Über die Einschränkungen von C#'s' Switch -Typ '

hinaus

c# unterstützt eine Anweisung "Schalttyp" nicht direkt. Diese Einschränkung ergibt sich aus der inhärenten Mehrdeutigkeit in Typhierarchien; Ein Objekt könnte möglicherweise mehrere Fälle übereinstimmen. Es gibt jedoch mehrere elegante Problemumgehungen, um typabhängige Logik zu erreichen.

Hebebau der Musteranpassung (C# 7 und später)

In C# 7 eingeführte Musteranpassung bietet eine kurze und lesbare Möglichkeit, typenbasierte Logik in switch Anweisungen zu verarbeiten. Beobachten Sie das Beispiel:

switch (shape)
{
    case Circle c:
        Console.WriteLine($"Circle with radius {c.Radius}");
        break;
    case Rectangle s when (s.Length == s.Height):
        Console.WriteLine($"{s.Length} x {s.Height} square");
        break;
    case Rectangle r:
        Console.WriteLine($"{r.Length} x {r.Height} rectangle");
        break;
    // ... more cases
}
Nach dem Login kopieren

Typ Name-basiertes Switching (C# 6 und später)

C# 6 und spätere Versionen geben dem nameof() -Operator an, und aktiviert einen Schalter basierend auf dem Namen des Typs:

switch (o.GetType().Name)
{
    case nameof(AType):
        // Handle AType
        break;
    case nameof(BType):
        // Handle BType
        break;
}
Nach dem Login kopieren

String-basierte Schaltanlage (C# 5 und früher)

Für ältere C# -Versionen (5 und unten) ist ein String-basiertes Switch mit dem Typennamen erforderlich:

switch (o.GetType().Name)
{
    case "AType":
        // Handle AType
        break;
}
Nach dem Login kopieren

Während diese Methoden "Schalttyp" effektiv imitieren, bieten sie möglicherweise nicht immer das gleiche Maß an Eleganz oder Wartbarkeit wie eine dedizierte Sprachfunktion. Die Wahl hängt von der C# -Version und der gewünschten Code -Klarheit ab.

Das obige ist der detaillierte Inhalt vonWie können wir die Typ-abhängige Logik in C# ohne direkte Funktion 'Schalttyp' implementieren?. 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