我使用的语言是C#。
假设一个对象的方法返回一个List<int>
。如果我们将这个结果赋值给一个类型为IEnumerable<int>
的变量,我们是否会获得任何好处呢?
换句话说:
IEnumerable<int> result = list
优于
List<int> result = list
,
其中list
是List<int>
。
我认为直观上我们不会从中获益。但是,我想要确定。因此我在询问这个问题。
我使用的语言是C#。
假设一个对象的方法返回一个List<int>
。如果我们将这个结果赋值给一个类型为IEnumerable<int>
的变量,我们是否会获得任何好处呢?
换句话说:
IEnumerable<int> result = list
优于
List<int> result = list
,
其中list
是List<int>
。
我认为直观上我们不会从中获益。但是,我想要确定。因此我在询问这个问题。
List<T>
特定的方法。 优点是,你可以在返回列表的方法中更改实现成另一种类型的列表(或集合等),因为你所需的只是IEnumerable<T>
。IList<T>
如果你需要像 Add
这样的方法。List<T>
不是一个好主意。如果你是该方法的实现者,则至少应该返回 IList<T>
,甚至可能是 IEnumerable<T>
。IEnumerable<T>
。另一个选项是使用 var
,但只有在方法返回类型明确的情况下才这样做。 - Lasse Espeholt*除非调用者对列表执行硬转换
话虽如此 - 使用最不具体的类/接口总是有益的 - 因为它为代码重用开辟了更多可能性。