Equivalência de “With ... End With” em C #? [duplicado]
-
21-08-2019 - |
Pergunta
Esta questão já tem uma resposta aqui:
- Com bloco equivalente em C #? 15 respostas
Eu sei que C # tem a palavra-chave using
, mas dispõe using
do objeto automaticamente.
Existe a equivalência de With...End With
em Visual Basic 6.0 ?
Solução
C # não tem um construtor de linguagem equivalente para isso.
Outras dicas
Não é equivalente, mas que este trabalho sintaxe para você?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
Não há equivalente, mas acho que discutir uma sintaxe pode ser interessante!
Eu gosto muito;
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
Qualquer outra sugestão?
Eu não posso imaginar que a adição deste recurso de linguagem seria difícil, essencialmente apenas um pré-processado.
EDIT:
Eu estava cansado de esperar por esse recurso, então aqui está e extensão que atinge um comportamento semelhante.
/// <summary>
/// C# implementation of Visual Basics With statement
/// </summary>
public static void With<T>(this T _object, Action<T> _action)
{
_action(_object);
}
Uso;
LongInstanceOfPersonVariableName.With(x => {
x.AgeIntVar = 21;
x.NameStrVar = "John";
x.NameStrVar += " Smith";
//etc..
});
EDIT: Curiosamente parece que alguém me bater para o soco, mais uma vez, com esta "solução". Oh bem ..
Eu acho que o equivalente da seguinte VB :
With SomeObjectExpression()
.SomeProperty = 5
.SomeOtherProperty = "Hello"
End With
Seria este é C # :
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
A única diferença real é que em vb, o identificador não tem um nome de "q", mas é simplesmente um padrão identificador usado quando um período é encontrado sem qualquer outro identificador antes.
Não existe uma estrutura equivalente em C #. Esta é a / VB.NET recurso Visual Basic 6.0.