Pergunta

Possível duplicata:
C# equivalente para o Visual Basic Keyword: 'com' ... 'termina com'?

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
Foi útil?

Solução

Não, não existe.

Embora você possa encurtar um pouco:

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

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

Para o seu outro caso:

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

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

Isso deveria ter sido óbvio;)

Outras dicas

Para novas instâncias, você pode usar o Inicializador de Objetos:

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

Não, não há nada como o with Construa em C#.

Não. A solução alternativa é um nome de variável local (curto) em vez de with. Adiciona alguns caracteres por linha, mas você ainda acaba com referências totalmente qualificadas.

Desculpe, C# não tem isso. O inicializador do objeto @jakub sugere que possa fornecer uma alternativa, ou:

Se você projetar Zeta você mesmo, você poderia usar o interface fluente padrão de design. Isso permitiria que você faça:

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

O que se aproxima do que você deseja, às custas de muito trabalho em outros lugares. E lembre -se de que uma interface fluente nem sempre é a melhor opção de design.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top