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
War es hilfreich?

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 #.

. 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top