4

在 VB.Net 4.0 中,我有需要重复类似代码的情况,但由于代码的复杂性,我将无法创建子例程来简化。我希望能够在块范围内声明变量,超出范围,然后重复。我目前的方法是做这样的事情。

If True Then
  Dim A = ...
  Dim B = ...
  (Code using A & B)
End If

...然后尽可能多地重复。

这个也有用。。。

Try
  Dim A = ...
  Dim B = ...
  (Code using A & B)
Finally
End Try

否则我必须给每个变量唯一的名字......

Dim A1 = ...
Dim B1 = ...
(Code using A1 and B1)
Dim A2 = ...
Dim B2 = ...
(Code using A2 and B2)

...这使得重复代码很危险,因为我在复制代码时可能会忘记更改变量名。

你可以在 C# 中做到这一点...

{
  int A = ...
  int B = ...
  (Code using A & B)
}

VB.Net 中有没有办法以这种方式创建块?

4

3 回答 3

3

我在一个日本网站上找到了这个答案。

With Nothing
  Dim A = ...
  Dim B = ...
  (Code using A & B)
End With

来自http://www.ilovex.co.jp/Division/ITD/archives/2007/11/with_nothing.html

(译自日文)我想如果我们考虑一下,用一个With语句来说明它是否不是一个更好的。因为,With 语句的目的是为了省略代码,因为它不打算从语句本身进行关联处理。

所以重点是,“With”语句除了包含快捷方式的代码外,并没有真正做任何事情。但是,它确实创建了一个独特的范围。这似乎在编译器中应该很轻。虽然我很想看到一些像“开始/结束”这样的新语句,但我将从现在开始使用它。

于 2012-11-15T23:08:33.383 回答
2

VB.Net 中没有固有的块范围语法,最常见的方法是您在问题中给出的第一个示例。

于 2012-11-15T20:37:44.817 回答
0

好吧,这是hacky hacky,但是怎么样:

Do
  dim a
  dim b

  ...

loop while (false)

有点像你的 if 语句,但你可以使用 false 常量。

于 2012-11-15T20:41:47.057 回答