c# 7.0: Anlage einschalten.Geben

Nicht vorhandene Frage hat eine Antwort auf diese Frage.

In c# 7, kann ich den Schalter direkt auf eine System.Type?

Wenn ich versuche:

    switch (Type)
    {
      case typeof(int):
        break;
    }

sagt es mir, dass typeof(int) muss ein konstanter Ausdruck sein.

Gibt es einige syntatic Zucker, dass mir erlaubt, zu vermeiden case nameof(int): und direkt vergleichen die Arten für die Gleichstellung? nameof(T) in einer case-Anweisung ist nicht ganz gut, weil namespaces. So, obwohl der name Kollision ist wahrscheinlich nicht anwendbar für int es gilt für andere Vergleiche.

In anderen Worten, ich versuche, mehr direkte als diese:

    switch (Type.Name)
    {
      case nameof(Int32):
      case nameof(Decimal):
        this.value = Math.Max(Math.Min(0, Maximum), Minimum); //enforce minimum 
        break;
    }
In c# 7, can I switch directly on a System.Type? Wenn man bedenkt, dass haben Sie die Antwort auf diese Ihre Frage, warum noch Fragen? Sie kennen die Antwort.
Nein, habe ich nicht. Mein Beispiel ist nicht die Antwort. Es ist das Gegenbeispiel.
Anstatt mit einem Schalter, können Sie bauen eine Dictionary<Type, Action> aufrufen der Funktion Sie möchten für einen bestimmten Typ? Würde der code sauberer sein, dass der Weg, denke ich.
it tells me that typeof(int) needs to be a constant expression. Das ist buchstäblich die Antwort auf Ihre Frage.
Vielleicht sollten Sie erklären, warum Sie wechseln wollen, auf System.Type, wenn Sie können, wechseln Sie einfach auf den Wert? Ich denke, man müsste typeof(value) vor.

InformationsquelleAutor toddmo | 2017-03-28

Schreibe einen Kommentar