我有一个方法:
static void FileChangesDetected(List<ChangedFiles> files)
我使用的是Visual Studio 2010和Resharper。Resharper总是建议我将List<T>
更改为IEnumerable<T>
,我想知道这是为什么。
在方法中,我只是这样做:
foreach (var file in files)
{ ... }
使用 IEnumerable<T>
相比于List<T>
有什么好处吗?
我有一个方法:
static void FileChangesDetected(List<ChangedFiles> files)
我使用的是Visual Studio 2010和Resharper。Resharper总是建议我将List<T>
更改为IEnumerable<T>
,我想知道这是为什么。
在方法中,我只是这样做:
foreach (var file in files)
{ ... }
使用 IEnumerable<T>
相比于List<T>
有什么好处吗?
Resharper建议您的方法并不真正需要List<T>
作为参数,而是可以轻松使用IEnumerable<T>
。这意味着您可以使您的方法更加通用。
如果你只是迭代你的files
,那么它不一定要是一个List<>。你的代码也可以使用数组。或者更一般地说:它将适用于任何你可以迭代的东西。这由IEnumerable<>表示。因此,使用List<>限制了你的消息使用而没有必要。ReSharper方法只是一个提示。
files
是一个IEnumerable<ChangedFiles>
的事实,您没有使用例如Count或Add等方法。IList<ChangedFiles>
而不是具体的实现。即使您将其更改为其他方式,仍然可以使用foreach。
IEnumerable<ChangedFiles>
或者
ICollection<ChangedFiles>
FastForward(IEnumerable<Time>)
方法,而无需先将其转换为List。 - corlettk