gpt4 book ai didi

c# - 不同的 linq 使用顺序之间是否存在性能差异?

转载 作者:行者123 更新时间:2023-12-04 07:42:24 25 4
gpt4 key购买 nike

IEnumerable<Element>.Cast<SomeClass>().FirstOrDefault();对比IEnumerable<Element>.FirstOrDefault().Cast<SomeClass>();我问的原因是,我在网上看到很多例子都是以第一种方式使用它的。
但是,第二个 linq 序列在性能方面是否更好,因为它避免首先转换 IEnumerable 中的所有元素?或者第一个更安全?或者他们实际上在做完全相同的后台?

最佳答案

IEnumerable<Element>.Cast<SomeClass>().FirstOrDefault();可能是你想要的,但答案与性能无关。
除非 ElementIEnumerable ,使用 Cast() 没有意义关于 FirstOrDefault() 的结果, 并会导致编译错误。
假设您的意思是 (SomeClass)(IEnumerable<Element>.FirstOrDefault());对于您的第二种情况,这也是有问题的,因为如果 IEnumerable<Element>为空,则 FirstOrDefault()将返回 null如果 Element是引用类型或默认构造 Element如果是值类型。最好使用默认构造 SomeClass如果 IEnumerable<Element>为空且 SomeClass是值类型,而不是尝试从 Element 进行强制转换至 SomeClass .IEnumerable<Element>.Cast<SomeClass>().FirstOrDefault();最多只能执行一次来自 Element 的类型转换至 SomeClass因为 LINQ 链是惰性枚举的。

关于c# - 不同的 linq 使用顺序之间是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67393607/

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