Equivalenza di “With ... End With” in C #? [duplicare]
-
21-08-2019 - |
Domanda
Questa domanda ha già una risposta qui:
- Con blocco equivalente in C #? 15 risposte
So che C # ha la using
parola chiave, ma With...End With
dispone dell'oggetto automaticamente.
C'è l'equivalenza delle <=> in Visual Basic 6.0 ?
Soluzione
C # non ha un linguaggio equivalente costrutto per questo.
Altri suggerimenti
Non è equivalente, ma sarebbe questo lavoro sintassi per voi?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
Non v'è alcun equivalente, ma penso che discutendo una sintassi potrebbe essere interessante!
mi piace molto;
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
Altri suggerimenti?
Non posso immaginare che l'aggiunta di questa caratteristica del linguaggio sarebbe difficile, in sostanza, solo un pre-elaborato.
Modifica
Ero stanco di aspettare per questa funzione, ecco e l'estensione che consente di ottenere un comportamento simile.
/// <summary>
/// C# implementation of Visual Basics With statement
/// </summary>
public static void With<T>(this T _object, Action<T> _action)
{
_action(_object);
}
Utilizzo;
LongInstanceOfPersonVariableName.With(x => {
x.AgeIntVar = 21;
x.NameStrVar = "John";
x.NameStrVar += " Smith";
//etc..
});
Modifica È interessante notare che sembra mi ha battuto qualcuno al punzone, ancora una volta, con questa "soluzione". Vabbè ..
Credo che l'equivalente del seguente VB :
With SomeObjectExpression()
.SomeProperty = 5
.SomeOtherProperty = "Hello"
End With
sarebbe questo è C # :
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
L'unica vera differenza è che in VB, l'identificatore non ha un nome "q", ma è semplicemente un identificatore di default utilizzato quando si incontra un periodo senza qualsiasi altro mezzo identificativo prima di esso.
Non v'è alcuna struttura equivalente in C #. Si tratta di un Basic 6.0 / VB.NET caratteristica visiva.