Cualquier visual analógica básico 'con' en C #? [duplicar]
-
26-09-2019 - |
Pregunta
Duplicar posibles:
equivalente C # para la palabra clave de 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
Solución
No, no existe.
A pesar de que podría acortarlo un poco:
var z = Alpha.Beta.Gama.Eta.Zeta;
z.ZetaPropertyA = a;
z.ZetaPropertyB = b;
z.ZetaPropertyC = c;
para el otro caso:
var z = Alpha.Beta.Gama.Eta.Zeta;
a = z.ZetaPropertyA;
b = z.ZetaPropertyB;
c = z.ZetaPropertyC;
Esto debería haber sido, aunque obvia;)
Otros consejos
Para los nuevos casos se puede utilizar inicializador de objeto:
Alpa.Beta.Gama.Eta = new Zeta
{
ZetaPropertyA = a,
ZetaPropertyB = b,
ZetaPropertyC = c
}
No, no hay nada como el constructo with
en C #.
Nop . La solución consiste en una (corta) nombre de la variable local en lugar de with
. Añade un par de caracteres por línea, pero todavía se termina con referencias totalmente calificados.
Lo sentimos, C # no tiene eso. El objeto inicializador @Jakub sugiere que podría proporcionar una alternativa, o:
Si el diseño de Zeta
usted mismo, usted podría utilizar el fluidez interfaz patrón de diseño. Eso permitirá hacer:
Alpha.Beta.Gama.Eta.Zeta
.SetPropertyA(A)
.SetPropertyB(B)
.SetPropertyC(C);
Lo que se acerca a lo que quiere, a expensas de una gran cantidad de otros lugares de trabajo. Y recuerde que una interfaz fluida no es siempre la mejor opción de diseño.