我见过这样的方法:
public void Foo(Listlist) { list.Add("Bar"); }
这是修改方法中参数的好习惯吗?
这会不会更好?
public ListFoo(List list) { // Edit List newlist = new List (list); newlist.Add("Bar"); return newlist; }
感觉就像第一个例子有意想不到的副作用.
在你给出的例子中,第一个似乎比第二个更好.如果我看到一个方法接受了一个列表并且还返回了一个列表,那么我的第一个假设是它返回一个新列表而不是触及它所给出的列表.因此,第二种方法是具有意想不到的副作用的方法.
只要您的方法命名正确,修改参数几乎没有危险.考虑一下:
public void Fill(IList list) { // add a bunch of items to list }
使用"Fill"之类的名称,您可以非常肯定该方法将修改列表.