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
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top