为什么VB Parallel.ForEach不能推断我的循环项类型?

Jür*_*ock 2 c# vb.net generics type-inference task-parallel-library

我有一类Parent具有财产Items这是一个List(of Child)

如果我使用此代码

Parallel.ForEach()(parent.Items,
            Sub(item)
                item.DoSomething()
            End Sub)
Run Code Online (Sandbox Code Playgroud)

我收到编译器警告 No overload for method ForEach() accepts this count of arguments

如果我将代码更改为

Parallel.ForEach(of Child)(parent.Items,
            Sub(item)
                item.DoSomething()
            End Sub)
Run Code Online (Sandbox Code Playgroud)

有用.

但是,在c#我可以写

Parellel.ForEach(parent.Items, item =>
    {
        item.DoSomething();
    });
Run Code Online (Sandbox Code Playgroud)

为什么VB在这种情况下不推断?

shf*_*301 5

在你的第一个VB例子中,你有一组额外的括号,所以你正在调用.ForEach没有参数.删除它们,它将工作:

Parallel.ForEach(parent.Items,
         Sub(item)
            item.DoSomething()
         End Sub)
Run Code Online (Sandbox Code Playgroud)