ホーム > プログラミング, Visual Basic > VBのUsing構文で変数を指定しない

VBのUsing構文で変数を指定しない


データベースの更新を行うクラスの単体テストを書く場合、特別な環境がない場合はTransactionScopeを定義だけしてその中にテストコードを書きます(ロールバックを任せる)。

<TestMethod()>
Public Sub ドメインにグループが存在しない場合は0件のリストを返すこと()
    Const testDomain = "unittest.com"
    Using ts = New TransactionScope()
        ' このテストのクリーンアップ
        DeleteTestRow(testDomain)
        AddTestRow(testDomain)

        Dim node = GroupNode.FindByDomain(testDomain)
        Assert.IsNotNull(node)
        Assert.AreEqual(0, node.Count())
    End Using
End Sub

まぁいいんですけれど、ReShaperを使っていると、未使用の変数ということでTransactionScopeのインスタンスを一時的に格納しているtsという変数がグレーになります。

image

おもむろに ts = を消してみました。

image

あれ、エラーにならない。てっきりVBでは一度変数に受けないとだめだと思っていたんですが、この書き方もできるんですね。そういえば以前書いたこの記事でもWith句で変数を指定していなかった記憶があります。って事は少なくとも.NET 3.5時代はすでにできたんでしょうね。

With Hoge.FindById(1)
    .Remove()
End With

ただ、相変わらずCatch句では変数を指定しないとダメですね。まぁ構文上しょうがない気もするけれど。

image

  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。