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」ステートメントは、ショートカットに含まれるコード以外は実際には何もしません。ただし、独自のスコープを作成します。これは、コンパイラではかなり軽いはずです。「Begin/End」のような新しいステートメントを見たいのですが、これは私がこれから使用するものです。

于 2012-11-15T23:08:33.383 に答える
2

VB.Netには固有のブロックスコープ構文はありません。最も一般的な方法は、質問で最初に示した例です。

于 2012-11-15T20:37:44.817 に答える
0

まあそれはハッキーハッキーですが、どうですか?

Do
  dim a
  dim b

  ...

loop while (false)

ifステートメントと同じようなものですが、false定数を使用するようになります。

于 2012-11-15T20:41:47.057 に答える