我了解两者之间的层次结构并知道如何在它们之间进行转换,但是声明这样的列表有什么根本错误吗?
IEnumerable<int> _bookmarkedDeals = new List<int>();
我不需要在任何时候更改列表,它可以作为一个整体创建或重新创建。
作为替代方案,可能这
IEnumerable<int> _bookmarkedDeals = Enumerable.Empty<int>();
好吧,在这种情况下,_bookmarkedDeals
将是空的,所以声明有点没用。话虽如此,将列表视为 IEnumerable 并没有错。
(与这里的所有答案不同..)是的。这个声明有一些非常错误的地方。List<T>
如果不一直投射回列表,您将无法使用任何功能。
如果以后不执行任何列表操作,最好从您的方法中返回此类型。但是,当您采用相同的方法时-您只是使您的生活变得更加艰难,并且表现不佳(因为演员表)。
您的声明绝对没有问题,尽管有些人确实喜欢在没有任何抽象的情况下精确地声明变量类型。
该声明没有任何问题,但除非您有任何特定限制,否则它IList<int>
是一个更适合列表的界面。
没有什么不对。
如果您从不以任何方式更改列表,您可能会使用数组 - 它比列表略轻。
它从根本上没有错,但是为什么要削减 List 提供的一些功能(IEnumerable 没有)?
没毛病,设计不错。阅读Arrays Considered Somewhat Harmful。关于选择正确界面的精彩阅读。
不,这没有什么问题。
如果这是一个局部变量,我认为仅使用var
创建一个类型的变量没有任何好处List<int>
。如果您只是枚举,则完全没有害处。如果它是一个领域,也许是公开暴露的事件,那么不将其暴露为 aList<int>
或IList<int>
保留具体类型的自由选择可能是非常明智的。
没有语法问题,但我看不出它有什么用处。如果您不在此行中插入任何项目,则此列表将始终为空,除非您将其转换回List<int>
,那么为什么要将其声明为IEnumerable<int>
?