gpt4 book ai didi

c# - 为什么我们在 LINQ 中需要 Single()?

转载 作者:太空狗 更新时间:2023-10-29 18:08:47 25 4
gpt4 key购买 nike

为什么扩展方法的主要目的是Single()

我知道如果序列中有多个元素与谓词匹配,它会抛出异常,但我仍然不明白它在哪种上下文中可能有用

编辑:
我确实了解 Single 的作用,因此您无需在问题中解释此方法的作用。

最佳答案

它对于声明性声明很有用

I want the single element in the list and if more than one item matches then something is very wrong

很多时候,程序需要根据特定谓词将一组元素缩减为感兴趣的元素。如果有多个匹配项,则表示程序中有错误。如果没有 Single 方法,程序将需要多次遍历可能昂贵的列表的部分内容。

比较

Item i = someCollection.Single(thePredicate);

Contract.Requires(someCollection.Where(thePredicate).Count() == 1);
Item i = someCollection.First(thePredicate);

后者需要两个语句并迭代一个潜在昂贵的列表两次。不好。

注意:是的,First 可能 更快,因为它只需要迭代枚举直到第一个匹配的元素。其余元素无关紧要。另一方面,Single 必须考虑整个枚举。如果多个匹配项对您的程序没有影响并且表明没有编程错误,那么可以使用 First

关于c# - 为什么我们在 LINQ 中需要 Single()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6004730/

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