我应该通过哪个接口公开List <T>?

ng5*_*000 4 .net c# ilist interface c#-3.0

在回答这个问题时, runefs建议"除非你有一个非常具体的理由使用IList,你应该考虑IEnumerable".你用哪个?为什么?

Tam*_*ege 12

IEnumberable<T>是只读的,您必须重新构建集合以对其进行更改.另一方面,IList<T>是读写.因此,如果您期望对集合进行大量更改,请公开,IList<T>但如果可以安全地假设您不会对其进行修改,请继续IEnumerable<T>.

  • 我同意.但是,我想补充一点,如果您只是将List <T>实例返回或转换为IEnumerable <T>,则收件人始终可以将其强制转换回IList <T>或List <T>.返回一个不可变的IEnumerable <T>的正确方法是使用AsReadOnly()方法,该方法返回一个实现IEnumerable <T>的包装器对象,并且不能转换回列表. (4认同)

jer*_*jvl 7

始终使用提供所需功能的最严格的界面,因为这为您提供了以后更改实施的最大灵活性.所以,如果IEnumerable<T>足够,那么使用...如果你需要列表功能,请使用IList<T>.

并且最好使用强类型通用版本.