许多不需要编译或执行的语句(通常在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();


陈述有何不同?

最佳答案

在您的两个LINQ语句中,都需要TSource类型。

它只是在第一个语句中显式提供,在第二个语句中隐式推断。

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

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

最后,您可以选择指定(或不指定)TSource只是为了使您的代码更具可读性-通过显式包含类型或删除多余的类型重复。

关于c# - Linq语句中的TSource有什么意义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10930158/

10-09 07:26