我见过这样的方法:

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/

10-10 18:46
查看更多