我的理解是,普遍的智慧说只使用异常才能获得真正特殊的条件(事实上,我已经多次在SO上看到过这种说法).
然而,Krzysztof Cwalina说:
关于例外的最大误解之一是它们用于"特殊条件".现实情况是它们用于传达错误条件.从框架设计的角度来看,没有"特殊条件"这样的东西.条件是否异常取决于使用的上下文,但可重用的库很少知道如何使用它们.例如,对于简单的数据输入应用程序,OutOfMemoryException可能是例外; 对于进行自己的内存管理的应用程序(例如SQL服务器)来说,这并不是那么特别.换句话说,一个人的特殊情况是另一个男人的慢性病.
然后,他接着说,例外情况应该用于:
考虑到Krzysztof Cwalina是MS CLR团队的PM,我问:你如何看待他的陈述?
我不知道该用在哪里Single,又该用在哪里SingleOrDefault。我理解两者的定义。
单身的:
它总是返回一行。
如果没有找到行,我会得到一个异常。
如果找到多行,我会得到一个异常。
单一或默认:
它总是返回一行,如果没有找到则返回默认值(What is the meaning of this DEFAULT VALUE").
如果有多行则异常。
问题1:“它将返回默认值”是什么意思
问题2:什么时候使用Single,什么时候使用SingleOrDefault。
我有一个删除功能,其中有以下代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Delete(int resumeId)
{
var r = _context
.Resumes
.Where(c => c.ResumeId == resumeId).SingleOrDefault();
_context.Resumes.Remove(r);
_context.SaveChanges();
return RedirectToAction("ResumeCenter");
}
Run Code Online (Sandbox Code Playgroud)
我只是盲目地到处放置SingleOrDefault(我至少期望一个值),请告诉我一个现实世界的场景,何时我应该使用“Single”以及我应该在哪里使用“SingleOrDefault”。