2

Parent私はプロパティとして持っているクラスを持ってItemsいますList(of Child)

このコードを使用する場合

Parallel.ForEach()(parent.Items,
            Sub(item)
                item.DoSomething()
            End Sub)

コンパイラの警告が表示されますNo overload for method ForEach() accepts this count of arguments

コードをに変更した場合

Parallel.ForEach(of Child)(parent.Items,
            Sub(item)
                item.DoSomething()
            End Sub)

できます。

しかし、C#では私はただ書くことができます

Parellel.ForEach(parent.Items, item =>
    {
        item.DoSomething();
    });

この場合、VBが推測しないのはなぜですか?

4

2 に答える 2

5

最初のVBの例では、追加の括弧のセットがあるため、パラメーターなしで.ForEachを呼び出しています。それらを削除すると、機能します。

Parallel.ForEach(parent.Items,
         Sub(item)
            item.DoSomething()
         End Sub)
于 2012-07-06T06:41:15.097 に答える
3

(Of )VBコンパイラで型引数を推測する場合は、型引数ブラケットを指定しません。

Parallel.ForEach(parent.Items,
        Sub(item)
            item.DoSomething()
        End Sub)

ほぼ同じように、C#コンパイラで型を推測する場合と同様に、型引数の<>山括弧は指定しません。

エラーは、VBコンパイラが最初の例で見ているのは、引数なしのForEachへの呼び出しと、それに続く最初の呼び出しからの戻り値に対する呼び出しであることを伝えようとしていました。()

于 2012-07-06T06:41:33.570 に答える