gpt4 book ai didi

c# - Linq 是否根据实际集合类型优化执行?

转载 作者:太空狗 更新时间:2023-10-29 21:09:40 27 4
gpt4 key购买 nike

Linq to objects 适用于任何 IEnumerable 对象。变量

string[] foo = new string[] { };

var bar = new List<string>();

都是IEnumerable<string> , 但如果我想知道每个人有多少元素,我可以使用 Length数组上的属性和 Count list 上的属性(property)。或者我可以使用 Count来自 Linq 的方法,这对两者都适用。

问题是:Linq 是否提供某种优化,例如为每个方法实现不同的算法,根据被查询对象的实际类型调用一个或另一个?

我想象的是这样的:

if (obj is Array<T>)
DoSomethingForArray(obj as Array<T>);
else if (obj is List<T>)
DoSomethingForList(obj as List<T>);
else if (obj is Collection<T>)
DoSomethingForCollection(obj as Collection<T>);
else
DoSomethingThatWorksForAnyIEnumerable(obj);

最佳答案

答案是:这取决于 - Linq 扩展方法 Count()检查类型是否实现了 ICollection<T>ICollection并使用 Count如果可能的话,它的属性,但它并没有针对所有可能的场景进行优化。

关于c# - Linq 是否根据实际集合类型优化执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941140/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com