Equivalence de « With ... End With » en C #? [dupliquer]
-
21-08-2019 - |
Question
Cette question a déjà une réponse ici:
- Avec équivalent bloc en C #? 15 réponses
Je sais que C # a le mot-clé using
, mais de l'With...End With
dispose objet automatiquement.
Y at-il de l'équivalence dans de Visual Basic 6.0 ?
La solution
C # ne dispose pas d'un langage équivalent à construire pour cela.
Autres conseils
Il est pas équivalent, mais cela fonctionnerait de syntaxe pour vous?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
Il n'y a pas d'équivalent, mais je pense que la discussion d'une syntaxe pourrait être intéressant!
Je aime bien;
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
Toutes les autres suggestions?
Je ne peux pas imaginer que l'ajout de cette fonctionnalité de langage serait difficile, essentiellement juste un prétraité.
EDIT:
J'étais malade d'attendre cette fonction, voici donc et l'extension qui permet d'atteindre un comportement similaire.
/// <summary>
/// C# implementation of Visual Basics With statement
/// </summary>
public static void With<T>(this T _object, Action<T> _action)
{
_action(_object);
}
Utilisation;
LongInstanceOfPersonVariableName.With(x => {
x.AgeIntVar = 21;
x.NameStrVar = "John";
x.NameStrVar += " Smith";
//etc..
});
EDIT: Fait intéressant, il semble que quelqu'un m'a battu au poinçon, encore une fois, avec cette "solution". Eh bien ..
Je pense que l'équivalent de ce qui suit VB :
With SomeObjectExpression()
.SomeProperty = 5
.SomeOtherProperty = "Hello"
End With
Ne serait-ce est C # :
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
La seule différence est que dans vb, l'identifiant ne porte pas de nom « q », mais est simplement un identifiant par défaut utilisé lorsqu'une période est rencontrée sans aucun autre identifiant devant lui.
Il n'y a pas équivalent à ... Avec la fin Avec C # .
Voici un tableau comparatif pour vous qui illustre les différences entre Visual Basic et C #.
Il n'y a pas de structure équivalente en C #. Ceci est un Visual Basic 6.0 / VB.NET fonction .