Equivalencia de “With ... End With” en C #? [duplicar]
-
21-08-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- Con bloque equivalente en C #? 15 respuestas
Yo sé que C # tiene la using
palabra clave, pero With...End With
dispone del objeto automáticamente.
¿Existe la equivalencia de <=> en Visual Basic 6.0 ?
Solución
C # no tiene un lenguaje equivalente construir para eso.
Otros consejos
No es equivalente, pero funcionaría esto sintaxis para usted?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
No hay un equivalente, pero creo que discutir una sintaxis podría ser interesante!
Me gusta bastante;
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
¿Alguna otra sugerencia?
No puedo imaginar que la adición de esta característica del lenguaje sería difícil, esencialmente sólo un pre-procesado.
EDIT:
Yo estaba harto de esperar para esta función, por lo que aquí está y extensión que logra un comportamiento similar.
/// <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 alguien me ganó de mano, de nuevo, con esta "solución". Oh, bueno ..
Creo que el equivalente de la siguiente VB
With SomeObjectExpression()
.SomeProperty = 5
.SomeOtherProperty = "Hello"
End With
Sería esto es C #
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
La única diferencia real es que en VB, el identificador no tiene nombre "q", sino que es simplemente un identificador por defecto utilizado cuando se encuentra un periodo sin ningún otro medio de identificación antes de ella.
No hay una estructura equivalente en C #. Se trata de un / función de Visual Basic 6.0 VB.NET .