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()
吗?
不,由于上述原因......生成了相同的代码.
这是同样的方法
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source);
Run Code Online (Sandbox Code Playgroud)
类型参数可以由编译器推断,因此您不需要指定它(除非您需要List
与IEnumerable
- 不同的类型- 在这种情况下您需要明确指定类型).
归档时间: |
|
查看次数: |
1193 次 |
最近记录: |