我见过这样的方法:
public void Foo(List<string> list)
{
list.Add("Bar");
}
这是在方法中修改参数的良好实践吗?
这会更好吗?
public List<string> Foo(List<string> list)
{
// Edit
List<string> newlist = new List<string>(list);
newlist.Add("Bar");
return newlist;
}
感觉就像第一个示例有意外的副作用。
最佳答案
在您提供的示例中,第一个对我来说比第二个好很多。如果我看到一个接受列表并返回列表的方法,则我的第一个假设是它正在返回一个新列表,而不触及给出的列表。因此,第二种方法是具有意外副作用的方法。
只要您的方法命名正确,修改参数的危险就很小。考虑一下:
public void Fill<T>(IList<T> list)
{
// add a bunch of items to list
}
使用“ Fill”之类的名称,您可以确定该方法将修改列表。
关于c# - 修改引用类型参数的方法不好吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/621414/