我记得在某个地方读过,在方法中返回数组会产生不必要的垃圾,而将数组作为引用传递却不会。
// Bad example. Generates garbage.
public int[] GetIntArray()
{
int[] intArray = new int[capacity]
// Fill the array with something.
return intArray;
}
// Good example. No garbage.
public void GetIntArray(int[] intArray)
{
// Fill the array with something.
return;
}
这是真的吗?我应该担心它并且真的避免第一种情况吗?
答案 0 :(得分:2)
这是真的吗?
不在这个特定的例子中。如果您已经传入一个数组,并根据它创建了一个 new 数组,那么是的,你会使用更多的内存,但在这种情况下会出现这样的情况。只有一个数组 - 要么在方法内部创建,要么在其外部创建。
我应该担心它并且真的避免第一种情况吗?
通常对于何时创建新集合以及何时修改现有集合没有严格的规则。两者都有有效的用例,因此取决于哪种方法的情况更好"。
答案 1 :(得分:0)
是。它会阻止该方法重新使用相同的数组。通常,让调用者执行内存分配更有效。但是,这是否值得麻烦显然是一种权衡。