2009-09-03 10 views
7

J'ai utilisé l'instruction using dans C# et VB. Je suis d'accord avec tous les critiques concernant l'imbrication en utilisant des instructions (C# semble bien fait, VB pas tellement)Utilisation de l'instruction avec plusieurs ressources système

Donc, dans cet esprit, je souhaitais améliorer mes instructions VB en utilisant "en utilisant" plus d'une ressource système dans le même bloc:

Exemple:

Using objBitmap As New Bitmap(100,100) 
    Using objGraphics as Graphics = Graphics.From(objBitmap) 
    End Using 
End Using 

pourrait être écrit comme ceci:

Using objBitmap As New Bitmap(100,100), objGraphics as Gaphics = Graphics.FromImage(objbitmap) 
End Using 

donc, ma question est quelle est la meilleure méthode? Mon instinct me dit que si les ressources sont liées/dépendantes, l'utilisation de plus d'une ressource dans une instruction using est logique.

+0

Ces blocs ne sont-ils pas identiques pour le compilateur VB? –

+0

Oui les blocs sont les mêmes pour le compilateur, mais très facilement pourrait causer de la confusion pour quelqu'un qui n'est pas familier avec l'utilisation – PersistenceOfVision

Répondre

11

Ma langue maternelle est C#, et il y a la plupart des gens préfèrent « empilés » usings quand vous avez beaucoup d'entre eux dans la même portée:

using (X) 
using (Y) 
using (Z) 
{ 
    // ... 
} 

Le problème avec la seule instruction à l'aide qui a VB.NET est que cela semble encombré et qu'il serait susceptible de tomber du bord de l'écran. Donc, au moins de ce point de vue, plusieurs utilisations semblent mieux dans VB.NET.

Peut-être que si vous combinez la seconde syntaxe avec continuités de ligne, il serait mieux:

Using objBitmap As New Bitmap(100,100), _ 
     objGraphics as Graphics = Graphics.FromImage(objbitmap) 
    ' ... 
End Using 

Que vous se rapproche de ce que je considère une meilleure lisibilité.

+0

J'accepte votre réponse en raison du fait que vous avez inclus l'exemple de continuation de ligne. J'étais conscient de cela comme une option pour améliorer la lisibilité, mais en utilisant la continuation commence vraiment à faire ressembler à la structure C# préférée de tout le monde. – PersistenceOfVision

+0

en fait la version vb avec des continuations de ligne est beaucoup plus lisible que la version C#! Au moins, nous ne voyons pas le groupe de 'using's – Unicornist

0

Ils sont identiques, vous devriez choisir celui que vous trouvez le plus lisible car ils sont identiques au niveau IL.

Personnellement, je aime la façon dont C# gère cela en permettant cette syntaxe:

using (Foo foo = new Foo()) 
using (Bar bar = new Bar()) 
{ 
    // .... 
} 

Cependant, je trouve l'équivalent VB.NET de cette forme (votre deuxième exemple) pour être moins lisible que les Using imbriquées déclarations de votre premier exemple. Mais ceci est juste mon opinion. Choisissez le style qui correspond le mieux à la lisibilité du code en question car c'est la chose la plus importante étant donné que la sortie est identique.

Questions connexes