为什么我应该选择返回 `IList` 而不是 `List`?
为什么我应该选择返回 `IList` 而不是 `List`?
在SO上,人们经常说你应该从你的方法中返回`IList
- \n
- 调用`new List
(returnedIList)`,以便可以使用`List`上的所有好用的方法 - 将其强制转换回`List
`,以便可以使用`List`上的所有好用的方法
\n
\n
\n第一个方法很笨重,第二个方法如果实现实际上更改为其他类型的话,会抛出(运行时)`InvalidCastException`(这是完全愚蠢的)。\n如果我使用`List
为什么我应该返回IList
在开发代码时,我们常常需要返回一个列表对象。通常情况下,我们会使用List
为什么要这样做呢?原因在于,使用IList
在.NET框架中,有很多派生于IList的类型。这意味着,如果我们使用IList
当然,也有人提出了一些不同的观点。有人认为,如果可能的话,应该返回IEnumerable而不是IList。因为IEnumerable是一个更为通用的接口,可以适用于更多的情况。此外,IEnumerable可以通过yield关键字来实现,从而避免了创建新的列表对象的开销。
然而,无论是返回IEnumerable还是IList,都有其适用的场景。对于一些特定的需求,IEnumerable可能无法满足要求,此时使用IList可能更合适。而对于一些可以使用列表的情况,IEnumerable也是一个不错的选择。
总之,使用IList
为什么我应该返回IList
原因是你的方法可以与实现了IList
不过,我不确定我是否理解了困难所在。如果某个方法返回的是一个实际的列表,并且其返回值取决于该列表,或者其使用方式特定于该列表,那么它应该返回List
我怀疑调用代码是在方法编写之后编写的,程序员不愿意更改方法以返回一个具体的List - 我正在努力理解这个决定是否合理。
解决方法:根据实际需求,如果方法的返回值依赖于具体的列表类型或者方法的使用方式特定于某个列表类型,则应该返回List
为什么我应该返回IList
在上述内容中,提到了以下几个原因:
1. 通过返回IList
2. 应该始终返回最通用的类型。在大多数情况下,可以使用IEnumerable
3. 在两种情况下,需要使用IList
根据上述内容,可以得出以下解决方法:
1. 在设计代码时,应该考虑到未来可能需要替换实现的情况。因此,应尽量返回最通用的类型,如IList
2. 如果需要更多的功能,可以考虑返回具体的类型,如List
3. 如果需要使用IList
为了提高代码的灵活性和可扩展性,应该尽量返回最通用的类型,如IList