2009-09-03 5 views
7

Ich habe die using-Anweisung in C# und VB verwendet. Ich stimme all den Kritikern in Bezug auf Verschachtelung mit Anweisungen (C# scheint gut gemacht, VB nicht so viel)Verwenden von Anweisung mit mehr als einer Systemressource

Also in diesem Sinne war ich daran interessiert, meine VB mit Anweisungen zu verbessern, indem Sie mehr als eine Systemressource innerhalb der gleicher Block:

Beispiel:

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

könnte wie folgt geschrieben werden:

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

So ist meine Frage, was ist die bessere Methode?

Mein Bauch sagt mir, dass, wenn die Ressourcen verwandt/abhängig sind, dann mehr als eine Ressource in einer Using-Anweisung logisch ist.

+0

Sind diese Blöcke nicht identisch für den VB-Compiler? –

+0

Ja, die Blöcke sind für den Compiler identisch, können aber sehr leicht für jemanden verwirren, der mit der Verwendung von – PersistenceOfVision

Antwort

11

Meine primäre Sprache ist C#, und die meisten Menschen es vorziehen, „gestapelt“ usings, wenn Sie im gleichen Umfang haben viele von ihnen:

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

Das Problem mit der einzigen Anweisung, dass VB.NET hat, ist es scheint überladen und es würde wahrscheinlich von der Kante des Bildschirms fallen. Aus dieser Perspektive sehen mehrere Usings in VB.NET besser aus.

Vielleicht, wenn Sie die zweite Syntax mit Linie Fortsetzungen kombinieren, wäre es besser aussehen:

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

die Sie näher an, was bekommt ich eine bessere Lesbarkeit in Betracht ziehen würde.

+0

nicht vertraut bin. Ich akzeptiere Ihre Antwort aufgrund der Tatsache, dass Sie das Zeilenfortsetzungsbeispiel eingefügt haben. Ich war mir bewusst, dass es eine Option zur Verbesserung der Lesbarkeit ist, aber die Verwendung von Continuation macht es wirklich so, dass es wie die von allen bevorzugte C# -Struktur aussieht. – PersistenceOfVision

+0

eigentlich ist die vb-version mit linienweiterleitungen viel lesbarer als die C# -version! zumindest sehen wir nicht viele 'using's – Unicornist

0

Sie sind beide gleich, Sie sollten diejenige auswählen, die am lesbarsten ist, da sie auf IL-Ebene identisch ist.

Ich persönlich mag die Art und Weise, dass C# diese Griffe durch diese Syntax erlaubt:

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

Jedoch habe ich das VB.NET Äquivalent dieser Form finden (Ihr zweites Beispiel) als die verschachtelten Using Aussagen weniger lesbar sein von deinem ersten Beispiel. Aber das ist nur meine Meinung. Wählen Sie den Stil, der am besten zur Lesbarkeit des betreffenden Codes passt, da dies die wichtigste Sache ist, wenn man bedenkt, dass die Ausgabe identisch ist.

Verwandte Themen