编辑:我在原来的问题中犯了一个错误。它应该是关于方法Last和LastOrDefault(或Single和SingleOrDefault,或First和FirstOrDefault - 很多!)。
受这个问题的启发,我打开了 Reflector 并查看了代码
Enumerable.Last<T>(this collection)
然后我跳到代码
Enumerable.LastOrDefault<T>(this collection)
我看到完全相同的一段代码(大约 20 行),只有最后一行不同(第一个方法返回默认值(T),第二个方法抛出异常)。
我的问题是为什么会这样?为什么微软的人允许在 .Net 框架内复制重要的代码片段?他们没有代码审查吗?