为什么(返回IList而不是返回List)更好?
在返回结果对象时,将其声明为IList而不是List,有以下几个原因:
1. 分离接口和实现:对于调用者来说,你如何实现结果对象并不重要,因此使用接口可以减少耦合。如果你返回IList,可以随时切换到不同的实现,而不会破坏调用者的代码。
解决方法是将返回类型声明为IList而不是具体的实现类List。这样,即使你以后更改了List的实现,调用者的代码也不会受到影响。
public IList GetResults() { // return a List or any other implementation of IList }
这样,调用者就可以使用这个方法返回的IList对象,而不需要关心具体的实现类。这种做法有助于提高代码的灵活性和可维护性。
为什么返回IList比返回List更好?
在这个问题中,我们需要返回一个IList接口的实现,而不是直接返回一个IList。当然,返回一个List也能满足返回IList的方法声明,因为List实现了IList接口。
通常最佳实践是接受参数时使用最通用的类型,并返回最具体的类型。然而,通常程序员不想将自己绑定到List的实现上,并且通常返回IList接口。如果您不希望调用者修改数组,您可以返回一个IEnumerable(在您的IList上调用.AsReadOnly()扩展方法)。
解决这个问题的方法是将返回类型从List更改为IList,并确保返回的对象是IList接口的实现。这样做可以提高代码的灵活性和可维护性。