Qualsiasi Visual Basic 'Con' analogico in C #? [duplicare]
-
26-09-2019 - |
Domanda
Eventuali duplicati:
C # equivalente per parola chiave di Visual Basic:? 'con' ... '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
Soluzione
No, non esiste.
Anche se si potrebbe accorciare un po ':
var z = Alpha.Beta.Gama.Eta.Zeta;
z.ZetaPropertyA = a;
z.ZetaPropertyB = b;
z.ZetaPropertyC = c;
per il vostro altro caso:
var z = Alpha.Beta.Gama.Eta.Zeta;
a = z.ZetaPropertyA;
b = z.ZetaPropertyB;
c = z.ZetaPropertyC;
Questo dovrebbe Sono stato però ovvio;)
Altri suggerimenti
Per i nuovi casi è possibile utilizzare inizializzazione degli oggetti:
Alpa.Beta.Gama.Eta = new Zeta
{
ZetaPropertyA = a,
ZetaPropertyB = b,
ZetaPropertyC = c
}
No, non c'è niente come il costrutto with
in C #.
No . La soluzione è una (breve) nome della variabile locale invece che with
. Aggiunge un paio di caratteri per riga, ma è ancora finire con riferimenti completi.
Siamo spiacenti, C # non ha questo. L'oggetto inizializzatore @Jakub suggerisce potrebbe fornire un'alternativa, o:
Se si progetta Zeta
te stesso, è possibile utilizzare il fluente interfaccia modello di progettazione. Ciò permetterà di fare:
Alpha.Beta.Gama.Eta.Zeta
.SetPropertyA(A)
.SetPropertyB(B)
.SetPropertyC(C);
Il che si avvicina a ciò che si vuole, a scapito di un sacco di lavoro altrove. E ricordate che un'interfaccia fluida non è sempre la scelta migliore design.