【发布时间】:2016-01-17 14:49:20
【问题描述】:
我有一些带有以下部分的遗留 C# 代码:
private List<MyClass> mList = new List<MyClass>();
public List<MyClass> getList()
{
List<MyClass> list = new List<MyClass>();
list.AddRange(mList);
return list;
}
不确定AddRange 的用途是什么?我可以改写成:
public List<MyClass> getList()
{
return mList;
}
【问题讨论】:
-
是的。从显示的代码来看,应该足够了。
-
不完全相同,因为
getList创建了一个包含相同对象的新列表,而return mList甚至返回相同的列表。因此,如果您致电getList().Clear(),原始列表也会被清除。 -
这个属性有一个丑陋的副作用,因为它暗示你可以通过修改返回的列表来改变所属类的状态。返回
IEnumerable或将其作为方法将是合适的做法。
标签: c# .net generics properties