如果有可能找不到元素,我应该使用Single()还是SingleOrDefault()?

20 浏览
0 Comments

如果有可能找不到元素,我应该使用Single()还是SingleOrDefault()?

你更喜欢看到哪个呢?

try
{
  var item = list.Single(x => x.HasFoo);
}
catch(InvalidOperationException e)
{
  throw new InvalidOperationException("期望找到一个具有 foo 的项目,但找不到", e);
}

还是:

var item = list.SingleOrDefault(x => x.HasFoo);
if (item == null)
      throw new InvalidOperationException("期望找到一个具有 foo 的项目,但找不到");

这里应该遵循什么最佳实践?哪个使异常更易理解?

0