|
2010/01/28(Thu) 15:15:41 編集(投稿者)
■No46225 (alvin さん) に返信 > 書き方2、3の場合、ビルドが通らないですが、正しく書き方は何でしょうか? Array.ForEach の第2引数の指定方法に着目しているようですが、 問題になっているのは、むしろ第1引数の方です。
> lst.ForEach(doAction) ←書き方1:この書き方は正しく動作する ここで呼び出されているのは、 『List(Of T) クラスの Sub ForEach( Action(Of T) ) メソッド』 ですよね。
> 'Array.ForEach(lst, doAction) ←書き方2:この書き方はエラーがでる 一方、ここで呼び出そうとしているのは、 『Array クラスの Sub ForEach(Of T)( T(), Action(Of T) ) 共有メソッド』 です。lst は「T の配列では無い」ので、上記のようには書けません。
強いて書くなら、配列に変換して Array.ForEach(lst.ToArray(), doAction) のように記述することになるでしょう。
> 'Arrar.ForEach(lst, doAction(Of String)) ←書き方3:この書き方はエラーがでる この場合、Of を指定するのであれば、 Array.ForEach(Of String)(lst.ToArray(), doAction) のように記述します。
あるいは Array.ForEach(Of String)(lst.ToArray(), New System.Action(Of String)(AddressOf MsgBox)) とか Array.ForEach(Of String)(lst.ToArray(), AddressOf MsgShow) とか Array.ForEach(Of Object)(lst.ToArray(), AddressOf MsgBox) とか Array.ForEach(lst.ToArray(), AddressOf MsgBox) とか lst.ForEach(AddressOf MsgShow) とか lst.ForEach(AddressOf MsgBox) とか lst.ForEach(Function(msg) MsgBox(msg)) とか。
|