Linq语句中TSource的重点是什么?

use*_*122 3 c# linq

许多语句(通常在Linq中看到)在编译或执行时不需要使用TSource.你为什么要指定TSource?

例:

 List<int> list = new List<int>(5) { 0, 1, 2, 0, 3 };

 int x = list.Where<int>(i => i == 0).FirstOrDefault<int>();
 int y = list.Where(i => i == 0).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

这些陈述有何不同?

Eni*_*ity 6

在两个LINQ语句中TSource都需要类型.

它只是在第一个语句中明确提供,并在第二个语句中隐式推断.

您可以TSource在编译器无法推断类型的情况下指定- 通常在lambda嵌套且非常复杂时.

此外,如果您希望使用lamdba中使用的超类型执行操作.例如,您可以指定Fruit类型,而不是让它推断Apple是否Apple继承Fruit.

最后,您可以选择指定(或不指定)TSourcejust以使代码更具可读性 - 通过明确包含类型或删除冗余类型重复.