Question

  

Possible en double:    C # équivalent pour le mot clé Visual Basic: 'Avec' ... '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
Était-ce utile?

La solution

Nope, n'existe pas.

Bien que vous pouvez raccourcir un peu:

var z = Alpha.Beta.Gama.Eta.Zeta;

z.ZetaPropertyA = a;
z.ZetaPropertyB = b; 
z.ZetaPropertyC = c;

pour votre autre cas:

var z = Alpha.Beta.Gama.Eta.Zeta;

a = z.ZetaPropertyA;
b = z.ZetaPropertyB;
c = z.ZetaPropertyC;

Cela aurait dû être évident si;)

Autres conseils

Pour les nouveaux cas, vous pouvez utiliser l'objet initialiseur:

Alpa.Beta.Gama.Eta = new Zeta
{
    ZetaPropertyA = a, 
    ZetaPropertyB = b,
    ZetaPropertyC = c
}

Non, il n'y a rien comme la construction de with en C #.

Non. La solution est un (court) nom de variable locale au lieu de with. Ajoute quelques caractères par ligne, mais vous finissez toujours avec des références qualifiés.

Désolé, C # ne pas. L'objet initialiseur @Jakub suggère pourrait fournir une alternative, ou:

Si vous concevez Zeta vous, vous pouvez utiliser le interface fluide modèle de conception. Cela vous permettra de le faire:

Alpha.Beta.Gama.Eta.Zeta
    .SetPropertyA(A)
    .SetPropertyB(B)
    .SetPropertyC(C);

Ce qui se rapproche de ce que vous voulez, au détriment de beaucoup d'ailleurs de travail. Et rappelez-vous qu'une interface fluide est pas toujours le meilleur choix de design.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top