Alle analogen Visual Basic 'Mit' in C #? [Duplikat]
-
26-09-2019 - |
Frage
Mögliche Duplizieren:
C # -Äquivalent für Visual Basic Stichwort: 'Mit' ... 'End With'
VB.NET
With Alpha.Beta.Gama.Eta.Zeta
a = .ZetaPropertyA
b = .ZetaPropertyB
c = .ZetaPropertyC
End With
C #?
a = Alpha.Beta.Gama.Eta.Zeta.ZetaPropertyA
b = Alpha.Beta.Gama.Eta.Zeta.ZetaPropertyB
c = Alpha.Beta.Gama.Eta.Zeta.ZetaPropertyC
Lösung
Nein, gibt es nicht.
Auch wenn Sie es ein bisschen verkürzen könnte:
var z = Alpha.Beta.Gama.Eta.Zeta;
z.ZetaPropertyA = a;
z.ZetaPropertyB = b;
z.ZetaPropertyC = c;
für Ihren anderen Fall:
var z = Alpha.Beta.Gama.Eta.Zeta;
a = z.ZetaPropertyA;
b = z.ZetaPropertyB;
c = z.ZetaPropertyC;
Das sollte offensichtlich gewesen, obwohl haben;)
Andere Tipps
Für neue Instanzen können Sie Objekt verwenden initializer:
Alpa.Beta.Gama.Eta = new Zeta
{
ZetaPropertyA = a,
ZetaPropertyB = b,
ZetaPropertyC = c
}
Nein, es gibt nichts, wie das with
Konstrukt in C #.
Nö . Die Abhilfe ist eine (kurze) lokale Variablennamen anstelle von with
. Fügt ein paar Zeichen pro Zeile, aber immer noch mit vollqualifizierten Referenzen am Ende.
Sorry, C # hat das nicht. Die Objektinitialisierer @Jakub schlägt könnte eine Alternative, oder:
Wenn Sie Zeta
selbst entwerfen, können Sie die Fluent Interface Design-Muster. Das würde erlauben Sie zu tun:
Alpha.Beta.Gama.Eta.Zeta
.SetPropertyA(A)
.SetPropertyB(B)
.SetPropertyC(C);
, die nahe kommt, was Sie wollen, auf Kosten von viel Arbeit an anderer Stelle. Und denken Sie daran, dass ein Fluent Interface nicht immer die beste Design-Wahl ist.