2009-09-03 13 views
7

Użyłem instrukcji using zarówno w języku C#, jak i VB. Zgadzam się ze wszystkimi krytykami dotyczącymi zagnieżdżania przy użyciu instrukcji (C# wygląda na dobrze zrobione, VB nie tak bardzo).Używanie instrukcji z więcej niż jednym zasobem systemowym

Z tego względu byłem zainteresowany ulepszeniem moich VB za pomocą instrukcji przez "używanie" więcej niż jednego zasobu systemowego w ramach sam blok:

Przykład:

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

można zapisać tak:

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

Więc moje pytanie jest jaki jest lepszy sposób?

Moje gut mówi mi, że jeśli zasoby są powiązane/zależne, użycie więcej niż jednego zasobu w instrukcji using jest logiczne.

+0

Czy te bloki nie są identyczne dla kompilatora VB? –

+0

Tak, bloki są takie same dla kompilatora, ale bardzo łatwo mogą spowodować zamieszanie dla kogoś, kto nie jest zaznajomiony z Używaniem – PersistenceOfVision

Odpowiedz

11

Moim głównym językiem jest C#, a tam większość ludzi woli „ułożone” usings gdy masz wiele z nich w tym samym zakresie:

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

Problem z wykorzystaniem pojedynczego stwierdzenia, że ​​ma to VB.NET wydaje się być zagracony i prawdopodobnie spadnie z krawędzi ekranu. Tak więc przynajmniej z tej perspektywy, wiele zastosowań wygląda lepiej w VB.NET.

Może jeśli połączyć drugi składni z kontynuacje linii, to będzie wyglądać lepiej:

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

To przybliża Cię do tego, co uważam za lepszą czytelność.

+0

Akceptuję twoją odpowiedź z powodu tego, że włączyłeś przykład kontynuacji linii. Wiedziałem, że jest to opcja do poprawy czytelności, ale korzystanie z kontynuacji naprawdę zaczyna sprawiać, że wygląda ona jak każda preferowana struktura C#. – PersistenceOfVision

+0

W rzeczywistości wersja vb z kontynuacją linii jest znacznie bardziej czytelna niż wersja C#! przynajmniej nie widzimy garstki "używania" – Unicornist

0

Są oba takie same, powinieneś wybrać ten, który uważasz za najbardziej czytelny, ponieważ są one identyczne na poziomie IL.

Osobiście podoba mi się sposób, że C# obsługuje ten poprzez umożliwienie tej składni:

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

jednak znaleźć odpowiednik VB.NET tej formy (twój drugi przykład), aby być mniej czytelny niż zagnieżdżonych Using sprawozdania z twojego pierwszego przykładu. Ale to tylko moja opinia. Wybierz styl, który najlepiej pasuje do czytelności kodu, o którym mowa, ponieważ jest to najważniejsza rzecz, biorąc pod uwagę, że dane wyjściowe są identyczne.

Powiązane problemy