使用包含多个系统资源的语句

时间:2009-09-03 15:34:18

标签: vb.net coding-style using-statement

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

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

示例:

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语句中使用多个资源是合乎逻辑的。

2 个答案:

答案 0 :(得分:13)

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

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

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

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

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

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

答案 1 :(得分:0)

它们都是相同的,你应该选择你认为最具可读性的那个,因为它们在IL级别是相同的。

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

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

但是我发现这个表单的VB.NET等价物(你的第二个例子)比第一个例子中的嵌套Using语句更不易读。但这只是我的意见。选择最适合相关代码可读性的样式,因为考虑到输出是相同的,这是最重要的。