gpt4 book ai didi

c# - .Single(), .SingleOrDefault() 方法的实际使用

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:34 24 4
gpt4 key购买 nike

在我们的项目中,我经常遇到诸如“序列包含多个元素”之类的非信息性消息。它时常发生。

检查一下不是更好吗:

var count = collection.Count(i => predicate);
if (count > 1)
{
throw new InformativeException("...");
}

if (count == 0)
{
throw new AnotherInformativeException("...");
}

?

我真的不明白在什么情况下 Single()/SingleOrDefault() 可能有用。仅当您将捕获 InvalidOperationException 并尝试将其转换为更具信息性时。

最佳答案

你是对的,错误消息是通用的,不是很具体。但是,我认为它们不需要是:

有两种情况:

  1. 很可能有 <> 1元素(例如,由于无效的配置文件条目或不太可能的用户输入错误)。在这种情况下,检查列表中的项目数量并抛出信息异常是正确的做法。

  2. 不可能有 <> 1元素 - 即,如果你得到 <> 1这里的元素,你在其他地方犯了一个编程错误。示例:

    // getItem's documentation guarantees that each element has a unique ID and
    // that there is an element with ID 1.
    var myItems = getItems();

    // if this fails, there is an implementation error in getItems
    var item1 = myItems.Single(x => x.ID == 1);

    在这种情况下,默认错误消息通常就足够了。使用 Single这里基本上充当运行时断言。

关于c# - .Single(), .SingleOrDefault() 方法的实际使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39366586/

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