Algum Visual Basic 'com' Analog em C#? [duplicado
-
26-09-2019 - |
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
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.