【发布时间】:2011-07-03 18:21:24
【问题描述】:
到处都写着你应该从你的方法中返回IList<T>,而不是List<T>,但我找不到任何真正好的理由。我一直在寻找执行此操作的代码,然后调用代码通常会执行以下两项操作之一:
- 调用
new List<T>(returnedIList),这样它就可以使用 List 上的所有好方法 - 转换回
List<T>,这样它就可以使用 List 上的所有好方法
第一个很笨重,第二个会抛出 (runtime) InvalidCastException 如果实现实际上更改为其他东西(这使得它完全愚蠢) .
如果我使用List<T> 并且由于某种原因必须用我无法从List<T> 继承的IList<T> 的实现来替换它,那么我会遇到构建错误并且必须更改一些代码。这可能不太可能发生,如果发生这种情况,修复的工作量并不大。对于这种不太可能发生的情况,当然不值得失去List<T> 的好处和/或必须强制转换/新建List<T>(存在、查找等)来让它们回来吗?
那么,返回IList<T>还有其他原因吗?
【问题讨论】:
-
不仅是“写满了”,这个问题已经被问及回答了!
-
道歉 - 经过 3 页的结果后,我放弃了寻找 - 所以“相关性”最近对我来说似乎有点不对劲!回答这个问题:stackoverflow.com/questions/400135/c-listt-or-ilistt/… ;D
-
不需要道歉,搜索 SO 的用处有限。我在 Google 上搜索了 site:stackoverflow.com!找到骗子!
-
嘿,好主意。虽然如果 SO 搜索不太好,我很惊讶他们自己没有使用 Google API :(
标签: c# .net generics interface