VB.Net&在lambda表达式中键入推理?

时间:2010-02-22 20:32:12

标签: vb.net lambda

我有一个类型,我们称之为“MyType”。我有一个List(Of MyType)。这就是我正在做的事情:

MyList.Sum(Function(x) x.MyFieldToTotal)

“MyFieldToTotal”是小数。对于我的生活,我无法弄清楚为什么上面的x是一个对象而不是一种“MyType”。在这种情况下,Type Inferencing不应该正常工作吗?即使在intellisense中,我也将“选择器作为System.Func(Of MyType)作为十进制”

测试C#和C之间的差异vb.net我做了以下事情:

dim MyVar as new list(Of System.IO.FileStream)
MyVar.Sum(Function(x) x.

List<System.IO.FileStream> MyVar = new List<System.IO.FileStream>();
MyVar.Sum(x=>x.

在VB.Net中,x的类型为Object,而在C#x中的类型为FileStream。那么为什么在这种情况下使用c#而不是vb.net进行类型推断?

另请注意,“选项推断”为开启

1 个答案:

答案 0 :(得分:1)

类型推断在编译器级别工作,但似乎智能感知引擎没有提取它(仅在VS2008中尝试过)。

完成语句后,VS会将其识别为FileStream对象(请参阅工具提示)...

    Dim MyList = New List(Of System.IO.FileStream)()
    Dim result = MyList.Sum(Function(x) x.Length)
编辑:这只是VS2008中的一个错误;在VS2010 RC中修复