9

using在 C# 和 VB 中都使用过该语句。我同意所有关于嵌套 using 语句的批评(C# 似乎做得很好,VB 不是那么多)

因此,考虑到这一点,我有兴趣通过在同一块中“使用”多个系统资源来改进我的 VB using 语句:

例子:

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

可以这样写:

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

所以我的问题是什么是更好的方法?

我的直觉告诉我,如果资源是相关的/依赖的,那么在 using 语句中使用多个资源是合乎逻辑的。

4

2 回答 2

14

我的主要语言是 C#,当您在同一范围内拥有许多使用时,大多数人更喜欢“堆叠”使用:

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

VB.NET 的单个 using 语句的问题是它看起来很混乱,很可能会掉到屏幕边缘。所以至少从这个角度来看,多重使用在 VB.NET 中看起来更好。

也许如果你将第二种语法与续行结合起来,它看起来会更好:

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

这让你更接近我认为更好的可读性。

于 2009-09-03T15:43:05.010 回答
0

它们都是相同的,您应该选择您认为最易读的一个,因为它们在 IL 级别是相同的。

我个人喜欢 C# 通过允许这种语法来处理这个问题的方式:

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

但是,我发现这种形式的 VB.NET 等效项(您的第二个示例)比Using您第一个示例中的嵌套语句的可读性差。但这只是我的看法。选择最适合相关代码可读性的样式,因为考虑到输出相同,这是最重要的事情。

于 2009-09-03T15:36:22.697 回答