with when visual statement net end c# vb.net with-statement

when - Equivalencia de "con... fin con" en C#?



when vb net (6)

Esta pregunta ya tiene una respuesta aquí:

Sé que C # tiene la palabra clave using , pero using recursos del objeto automáticamente.

¿Existe la equivalencia de With...End With en Visual Basic 6.0 ?


C # no tiene una construcción de lenguaje equivalente para eso.


No es equivalente, pero ¿funcionaría esta sintaxis para usted?

Animal a = new Animal() { SpeciesName = "Lion", IsHairy = true, NumberOfLegs = 4 };


No hay equivalente, pero creo que discutir una sintaxis podría ser interesante.

Me gusta bastante;

NameSpace.MyObject. { active = true; bgcol = Color.Red; }

¿Cualquier otra sugerencia?

No puedo imaginar que agregar esta característica de idioma sería difícil, esencialmente solo un preprocesado.

EDITAR:

Estaba harto de esperar por esta característica, así que aquí está la 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.. });

EDITAR: Curiosamente, parece que alguien me golpeó hasta el golpe, de nuevo, con esta "solución". Oh bien..


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 un nombre "q", sino que es simplemente un identificador predeterminado que se utiliza cuando se encuentra un período sin ningún otro identificador antes.


No hay equivalente a Con ... Terminar con C # .

Aquí hay un cuadro comparativo que ilustra las diferencias entre Visual Basic y C #.


No hay una estructura equivalente en C #. Esta es una característica de Visual Basic 6.0 / VB.NET .