【发布时间】:2014-09-21 04:26:34
【问题描述】:
一般来说,这样做更好吗:
public void Foo1(List<int> list)
{
list.Add(1);
}
或者这个:
public List<int> Foo2()
{
List<int> list = new List<int>();
list.Add(1);
return list;
}
我问的原因是因为我目前正在使用第一种方式(除了方法不同并且显然更复杂),这需要我始终使用两行来调用该方法(这加起来到很多额外的行):
List<int> list = new List<int>();
Foo1(list);
而第二种方式我可以只使用一行:
List<int> list = Foo2();
那么考虑到时间和空间,哪种方式更好?
编辑:好的,更具体地说,我有一个方法可以将 T 类型的所有控件从 ControlCollection 添加到 List。
public static void GetControlsRec<T>(Control.ControlCollection controlCollection, List<T> resultCollection) where T : Control
{
foreach (Control control in controlCollection)
{
if (control is T)
resultCollection.Add((T)control);
if (control.HasChildren)
GetControlsRec(control.Controls, resultCollection);
}
}
在这种情况下哪个会更好?
【问题讨论】:
-
更有意义的那个更好。如果该方法看起来像是对列表进行了变异,请让它这样做。如果该方法在更改列表时最有用,请这样命名。否则,不要。
-
这完全取决于上下文。有时可以修改一些东西;其他时候最好不要。仅凭这么多信息我们无法判断。
-
好的,我添加了更多细节。
标签: c# performance list parameters return