メソッドについて


  2009-06-29 19:13:53  No: 146033

メソッドでsubとFunctionの2つのステートメントがあり、違いは
戻り値をもつかどうかということですが、

どちらのステートメントでも書けるプログラムが多いような気が
しています。
どうしてもFunction、戻り値をもつステートメントを使わなければ
ならないといったケースはあるのでしょうか・

VB2008  6か月


魔界の仮面弁士  2009-06-29 20:29:00  No: 146034

> どちらのステートメントでも書けるプログラムが多いような気がしています。
通常は、自分にとって都合のよい方を利用すれば 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


  2009-07-01 00:25:23  No: 146035

魔界の仮面弁士 さん、感謝、感謝です。m(_ _)m


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加