メソッドでsubとFunctionの2つのステートメントがあり、違いは
戻り値をもつかどうかということですが、
どちらのステートメントでも書けるプログラムが多いような気が
しています。
どうしてもFunction、戻り値をもつステートメントを使わなければ
ならないといったケースはあるのでしょうか・
VB2008 6か月
> どちらのステートメントでも書けるプログラムが多いような気がしています。
通常は、自分にとって都合のよい方を利用すれば OK です。
> どうしてもFunction、戻り値をもつステートメントを使わなければ
> ならないといったケースはあるのでしょうか・
あります。たとえばラムダ式が要求されるような場所には、
AddressOf で Function プロシージャを指定することができますが、
AddressOf で Sub プロシージャを指定することはできません。
また、イベント応答のためのプロシージャの場合はその逆で、
Function は使用できず、常に Sub として定義する必要があります。
Private Sub Button1_Click() Handles Button1.Click
Dim X() As Integer = {11, 22, 33, 44, 55}
Dim 偶数() As Integer
'これはOK
偶数 = Array.FindAll(X, Function(n) n Mod 2 = 0)
'これもOK
偶数 = Array.FindAll(X, AddressOf Test1)
'これはNG。第二引数は「Function Foo(n As Integer) As Boolean」の形でなければならない。
'偶数 = Array.FindAll(X, AddressOf Test2)
End Sub
Private Function Test1(ByVal n As Integer) As Boolean
Return n Mod 2 = 0
End Function
Private Sub Test2(ByVal n As Integer)
Return
End Sub
魔界の仮面弁士 さん、感謝、感謝です。m(_ _)m
ツイート | ![]() |