可能重复:
C# - List <T>或IList <T>
当我从我的方法返回一个列表时,我可以用两种方式完成.作为一个清单
Private List<datatype> MethodName()
{
Return List
}
Run Code Online (Sandbox Code Playgroud)
作为一个IList
Private IList<datatype> MethodName()
{
Return IList
}
Run Code Online (Sandbox Code Playgroud)
我听说我们应该把它作为IList归还.有人能解释为什么吗?
如果您通过其他人将使用的库公开您的类,您通常希望通过接口而不是具体实现来公开它.如果您决定稍后更改类的实现以使用其他具体类,这将有所帮助.在这种情况下,您的库的用户将不需要更新他们的代码,因为接口不会更改.
如果你只是在内部使用它,你可能不在乎,使用List可能没问题.
阅读这个问题的解决方案:为什么公开List <T>被认为是不好的?
您不能返回 an IList- 您需要返回该接口的实现(即 a List)。当然,返回 'List' 将满足您返回 aIList因为Listimplements 的方法声明IList。
通常最佳做法是接受最通用类型的参数并返回最具体的. 然而,通常程序员往往不想将自己绑定到List实现并通常返回IList接口。IEnumerable如果您不希望调用者修改数组(.AsReadOnly()在您的 上调用扩展方法IList),您可能会返回。