我有一个类型,我们称之为“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进行类型推断?
另请注意,“选项推断”为开启
答案 0 :(得分:1)
类型推断在编译器级别工作,但似乎智能感知引擎没有提取它(仅在VS2008中尝试过)。
完成语句后,VS会将其识别为FileStream对象(请参阅工具提示)...
Dim MyList = New List(Of System.IO.FileStream)()
Dim result = MyList.Sum(Function(x) x.Length)
编辑:这只是VS2008中的一个错误;在VS2010 RC中修复