web-dev-qa-db-fra.com

L'équivalence de "avec ... fin avec" en C #?

Je sais que c # a le mot clé using, mais using dispose automatiquement de l'objet.

Y a-t-il l'équivalence de With...End With In Visual Basic 6. ?

22
odiseh

C # n'a pas de construction de langue équivalente pour cela.

34
Philippe Leybaert

Ce n'est pas équivalent, mais cette syntaxe fonctionnerait-elle pour vous?

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

Il n'y a pas d'équivalent, mais je pense que discuter d'une syntaxe pourrait être intéressant!

J'aime assez;

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

D'autres suggestions?

Je ne peux pas imaginer que l'ajout de cette fonctionnalité de langue serait difficile, essentiellement simplement un prétraité.

Edit :

J'étais marre d'attendre cette fonctionnalité, alors voici et une extension qui atteint 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);
}

Usage;

LongInstanceOfPersonVariableName.With(x => {
     x.AgeIntVar = 21;
     x.NameStrVar = "John";
     x.NameStrVar += " Smith";
     //etc..
});

éditer : intéressant, il semble que quelqu'un me frappe au poinçon, à nouveau, avec cette "solution". Tant pis..

21
expelledboy

Je pense que l'équivalent des suivants VB :

With SomeObjectExpression()
  .SomeProperty = 5
  .SomeOtherProperty = "Hello"
End With

Serait ceci est c #:

{
  Var q=SomeOtherExpression();
  q.SomeProperty = 5;
  q.SomeOtherProperty = "Hello";
}

La seule différence réelle est que dans VB, l'identifiant n'a pas de nom "Q", mais il s'agit simplement d'un identifiant par défaut utilisé lorsqu'une période est rencontrée sans aucun autre identifiant avant de celle-ci.

9
supercat

Il n'y a pas d'équivalent avec ... fin avec dans c # .

Voici n tableau de comparaison pour vous qui illustre des différences entre Visual Basic et C #.

6
Joseph

Il n'y a pas de structure équivalente en C #. Ceci est une fonctionnalité Visual Basic Basic 6.0/ VB.NET .

3
JaredPar