gpt4 book ai didi

c# - List.OfType<> 的性能影响是什么,其中整个列表都是该类型?

转载 作者:行者123 更新时间:2023-11-30 13:13:34 25 4
gpt4 key购买 nike

我有一个架构,我们将数据节点作为 IEnumerable<BaseNode> 传递.一切都很好,但在每个子类中,我们希望将它们存储为 List<AnotherNode>因为该类中的所有内容都创建并使用了 AnotherNode对象(我们有大约 15 个不同的子类)。

使用更强类型列表的一个地方不起作用是返回类型 IEnumerable<BaseNode> 的根类方法。由于 .net 3.5 中的协方差限制,无法返回。 (我们现在必须继续使用 .net 3.5。)

但是如果我有 List<AnotherNode> data;并返回 data.OfType<BaseNode>(); - 效果很好。所以这是我的问题。

因为所有数据的类型都是 BaseNode - 这个电话的性能影响是什么?因为替代方案是我必须在性能影响较小的地方进行转换 - 但在这种情况下,我们会放弃一切,知道它的类型。

最佳答案

两件小事:

  1. 生成枚举器中的每个项目都会产生少量但可衡量的开销。如果您因为处于非常紧密的内部循环中而需要关心这一点,那么实际上最好直接在列表上使用 for 循环进行迭代。这很可能无关紧要。

  2. 因为结果是IEnumerable<BaseNode>并且已经通过生成枚举函数​​进行了过滤,后续对 Count() 或 ElementAt() 等方法的调用将不会利用列表的 LINQ 实现中的优化。这也不太可能成为问题,除非您经常使用这些扩展方法并且拥有大量元素。

关于c# - List.OfType<> 的性能影响是什么,其中整个列表都是该类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7195478/

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