2009-09-03 6 views
7

ho usato la dichiarazione using sia in C# e VB. Sono d'accordo con tutti i critici riguardo il nesting usando le affermazioni (C# sembra ben fatto, VB non così tanto)Utilizzando dichiarazione con risorsa più di un sistema

Quindi con questo in mente ero interessato a migliorare il mio VB usando le affermazioni "usando" più di una risorsa di sistema all'interno del stesso blocco:

Esempio:

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

potrebbe essere scritto in questo modo:

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

Quindi la mia domanda è che cosa è il metodo migliore?

Il mio istinto mi dice che se le risorse sono correlate/dipendenti, l'utilizzo di più di una risorsa in un'istruzione using è logico.

+0

non sono quelli blocchi appena identico per il compilatore VB? –

+0

Sì i blocchi sono gli stessi al compilatore, ma molto facilmente potrebbero causare confusione per qualcuno non ha familiarità con Utilizzando – PersistenceOfVision

risposta

11

La mia prima lingua è il C#, e c'è la maggior parte delle persone preferisce usings "impilati" Quando hai molti di loro nello stesso ambito:

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

Il problema con il singolo utilizzando affermazione che VB.NET ha è che sembra ingombra e potrebbe cadere sul bordo dello schermo. Quindi, almeno da questa prospettiva, molteplici usi sembrano migliori in VB.NET.

Forse se si combinano la seconda sintassi con continuazioni di linea, sarebbe un aspetto migliore:

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

che ti porta più vicino a quello che io considero una migliore leggibilità.

+0

sto accettando la tua risposta a causa del fatto che hai incluso l'esempio continuazione di riga. Ne ero consapevole come un'opzione per migliorare la leggibilità, ma l'utilizzo della continuazione inizia davvero a far sembrare la struttura C# preferita di tutti. – PersistenceOfVision

+0

in realtà la versione vb con continuazioni di linea è molto più leggibile rispetto alla versione C#! almeno non stiamo vedendo un mucchio di 'using's – Unicornist

0

Sono entrambi uguali, si dovrebbe scegliere quello che si trova per essere il più leggibile in quanto sono identici a livello IL.

Personalmente, come il modo in cui C# gestisce questo permettendo questa sintassi:

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

Tuttavia ho trovato l'equivalente VB.NET di questa forma (il secondo esempio) per essere meno leggibile rispetto alle nidificate Using dichiarazioni dal tuo primo esempio. Ma questa è solo la mia opinione. Scegli lo stile che meglio si adatta alla leggibilità del codice in questione poiché questa è la cosa più importante considerando che l'output è identico.

Problemi correlati