gpt4 book ai didi

c# - 优雅的方式来处理在 C# 中的集合中找不到的项目

转载 作者:可可西里 更新时间:2023-11-01 08:58:35 25 4
gpt4 key购买 nike

我有以下场景:

  1. 我有一个循环遍历集合的 foreach 循环,如果找到一个项目(基于下面示例中的条件),它将返回该项目。

如果不是,处理这个异常的最优雅的方法是什么。我有一个 throw new notimplementedexception 但我认为有一种更优雅的方法。

代码是:

 foreach (SPContentType type in sPContentTypeCollection)
{
if (type.Name == contentTypeName)
{
return type;
}
}

throw new NotImplementedException();

如您所见,这不是我所说的可读代码。我怎样才能让下一个人更容易维护。顺便说一句,从技术角度来看,它做了它应该做的事情。

最佳答案

嗯,NotImplementedException 肯定是不合适的,因为您已经实现了该方法...但是您应该抛出什么样的异常?老实说,这真的取决于上下文。

有时返回 null 以指示缺失值是合适的。其他时候,抛出异常没问题——可能是 InvalidOperationException。例如。如果这种情况代表某种描述的错误,而不是调用者应该期望发生的完全合理的情况,您应该抛出异常。

至于其余代码...如果您使用的是 .NET 3.5,则可以只使用 LINQ:

return sPContentTypeCollection.Cast<SPContentType>()
.First(type => type.Name == contentTypeName);

如果找不到该名称,它将自动为您抛出一个 InvalidOperationException。或者如果你想返回 null:

// type shortened to t to avoid scrollbars...
return sPContentTypeCollection.Cast<SPContentType>()
.FirstOrDefault(t => t.Name == contentTypeName);

关于c# - 优雅的方式来处理在 C# 中的集合中找不到的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5541247/

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