在ToList<T>()
,AsEnumerable<T>()
等方法中指定具体类型是否有意义?
.ToList<SomeClass>()
执行速度会不仅仅是.ToList()
吗?
答案 0 :(得分:10)
如果编译器推断出一种类型并且您想要指定另一种类型,那么这是有意义的。否则就没有意义了。
例如,假设您有一个IEnumerable<string>
并希望创建List<T>
...如果您想要List<string>
,那么只需致电ToList()
。如果您想使用通用协方差并获得List<object>
,请致电ToList<object>
:
IEnumerable<string> strings = new [] { "foo" };
List<string> stringList = strings.ToList();
List<object> objectList = strings.ToList<object>();
无论您使用上述代码还是
,中间行生成的IL都是相同的List<string> stringList = strings.ToList<string>();
这只是编译器为你推断类型的问题。
.ToList<SomeClass>()
执行速度会不仅仅是.ToList()
吗?
不,由于上述原因......生成相同的代码。
答案 1 :(得分:7)
它采用相同的方法
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source);
类型参数可以由编译器推断,因此您不需要指定它(除非您需要与List
不同类型的IEnumerable
- 在这种情况下您需要明确指定类型。