ToList <T>()vs ToList()

Rom*_*ada 1 .net c# generics performance list

是否有意义指定具体类型的ToList<T>(),AsEnumerable<T>()等等的方法呢?

.ToList<SomeClass>()执行得更快.ToList()吗?

Jon*_*eet 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>();
Run Code Online (Sandbox Code Playgroud)

无论您使用上述代码还是使用,生成的中间行IL都是相同的

List<string> stringList = strings.ToList<string>();
Run Code Online (Sandbox Code Playgroud)

这只是编译器为您推断类型的问题.

.ToList<SomeClass>()执行得更快.ToList()吗?

不,由于上述原因......生成了相同的代码.


Jak*_*rtz 7

这是同样的方法

public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source);
Run Code Online (Sandbox Code Playgroud)

类型参数可以由编译器推断,因此您不需要指定它(除非您需要ListIEnumerable- 不同的类型- 在这种情况下您需要明确指定类型).