【VB.NET】メソッドの省略呼び出し
概要
VB.NETでコーディングをしている際、メソッドを1回だけ呼び出したいが、インスタンス自体を保持する必要がないというケースがよくあります。
この記事では、そうした場合にインスタンス変数を省略してメソッドを呼び出す方法を整理しました。
※ なお、そもそもインスタンスを保持しない設計が適切なメソッドは、Sharedにするのが望ましいです。
メソッドの省略呼び出し
実際出来るのか?
Functionメソッド:省略呼び出しが可能
Subメソッド:構文エラーとなり、省略呼び出しは不可
※ Subメソッドでもできる方法をご存じの方がいたら、ぜひ教えてください。
サンプルソース
code:sample.vb
' 1. 普通の記述
Dim instance As New ClassName()
Dim value As String
value = instance.FuncMethod()
' 2. 変数宣言時に初期化する場合
Dim instance As New ClassName()
Dim value As String = instance.FuncMethod()
' 3. インスタンス変数を省略する場合
Dim value As String
value = New ClassName().FuncMethod()
' 4. 2.と3.を組み合わせた場合
Dim value As String = New ClassName().FuncMethod()
' ※ Subメソッドでは構文エラーになる
New ClassName().SubMethod() ' 構文エラー
コードの考察
2.の書き方
インスタンスを変数として保持しつつ、宣言と同時に初期化する書き方。
2行を1行にできるが、代入先は変数に限られる(プロパティなどには使えない)。
3.の書き方
一時インスタンスを生成してメソッドを1回だけ呼ぶ書き方。
インスタンスを使い回す必要がないときに有効。
Functionメソッド限定(Subでは構文エラー)。
4.の書き方
3と同様だが、宣言・呼び出しを1行でまとめた最も簡潔な形。
ただし、行が長くなりすぎると可読性を損なうので注意。
#VB.NET