Je sais que C# a le mot-clé using
, mais using
dispose automatiquement de l'objet.Equivalence de "With ... End With" dans C#?
est-il l'équivalence des With...End With
en Visual Basic 6.0?
Je sais que C# a le mot-clé using
, mais using
dispose automatiquement de l'objet.Equivalence de "With ... End With" dans C#?
est-il l'équivalence des With...End With
en Visual Basic 6.0?
C# n'a pas de construction de langage équivalente pour cela.
c'est vrai. Mais si vous avez une classe avec des méthodes qui retournent 'this', vous pouvez enchaîner les méthodes ensemble. – Dlongnecker
Il n'y a pas d'équivalent à Avec ... Fin de dans C#.
est ici pour vous a comparison chart qui illustre les différences entre Visual Basic et C#.
Ce tableau de comparaison est génial. Je travaille sur la transition à C# de VB et cela va être très utile. –
Il n'y a pas de structure équivalente en C#. Ceci est une fonctionnalité Visual Basic 6.0/VB.NET.
Ce n'est pas équivalent, mais cette syntaxe fonctionnerait-elle pour vous?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
"Avec" ne crée pas d'instances, donc c'est faux. –
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, la identifiant n'a pas de nom "q", mais est simplement un identifiant par défaut utilisé quand une période est rencontrée sans y autre identificateur avant lui.
Qu'est-ce qui se passe avec les curlies extérieures?Désolé, mais ce n'est pas du tout proche de l'équivalent. C'est juste un tas d'appels aux setters. – tomfanning
Les accolades externes définissent la portée de la variable q. A condition que l'expression de l'objet soit une classe plutôt qu'une structure, je pense que le code VB.Net et C# ci-dessus sont presque exactement équivalents. L'instruction précédente est un exemple de la façon dont une instruction with peut être utilisée et la dernière instruction est une traduction C#. L'exemple C# utilise un couple setters car c'est ce que fait l'exemple VB.net arbitrairement choisi. Le point essentiel est que le «avec» équivaut à définir une variable temporaire et à l'utiliser à chaque fois qu'une période est utilisée sans identifiant précédent. – supercat
Ce n'est pas un équivalent, c'est une alternative. –
Il n'y a pas d'équivalent, mais je pense que discuter d'une syntaxe pourrait être intéressant!
J'aime bien;
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
Autres suggestions?
Je ne peux pas imaginer que l'ajout de cette fonctionnalité de langue 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". Oh bien ..
Bien que pas exactement la même chose, j'aime votre idée. S'il est utilisé avec une bonne mise en forme, il peut rendre le code plus lisible. – Rudi
Donc, vous avez fini par répéter le nom de la variable. Vous pouvez faire la même chose avec: 'x = LongInstanceOfPersonVariableName; x.AgeIntVar = 21; // etc' – LoBo
Je viens de vomir un peu dans ma bouche. – JJS
"avec" existait bien avant VB. Il existe en Pascal, pour traiter les types d'enregistrements. Je ne sais pas si Pascal a emprunté l'idée d'ailleurs. – JeffK