为什么我在 Reflector 的 Linq 中看到如此多的代码重复?
编辑:我原来的问题犯了一个错误。它应该是关于方法Last和LastOrDefault(或Single和SingleOrDefault,或First 和 FirstOrDefault - 很多!)。
灵感来自 这个问题,我打开Reflector并查看了代码
Enumerable.Last<T>(this collection)
然后我跳到了代码
Enumerable.LastOrDefault<T>(this collection)
,我看到了完全相同的一段代码(大约20行),不同之处在于只有最后一行(第一个方法返回默认值(T),第二个方法抛出异常)。
我的问题是为什么会这样?为什么 Microsoft 的人允许在 .Net 框架内重复重要的代码片段?他们没有代码审查吗?
Edit: I made a mistake in my original question. It should be about methods Last and LastOrDefault (or Single and SingleOrDefault, or First and FirstOrDefault - plenty of them!).
Inspired by this question, I opened Reflector and looked at code of
Enumerable.Last<T>(this collection)
Then I jumped to code of
Enumerable.LastOrDefault<T>(this collection)
and I saw exactly the same piece of code (about 20 lines) differing in only one last line (first method returns default(T), second throws exception).
My question is why it is so? Why guys in Microsoft allow duplication of non-trivial pieces of code inside .Net framework? Don't they have code review?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
事实上,它们并不完全相同。第一个是这样的:
另一个是这样的:
PS:我希望我现在没有侵犯任何版权。 :S
In fact, they are not quite the same. The first is like this:
And the other is like this:
PS.: I hope I'm not breaking any copyrights now. :S