【发布时间】:2016-06-17 02:20:05
【问题描述】:
考虑以下几点:
public class FooBar {
public int[] SomeNumbers {
get { return _someNumbers; }
private set;
}
private int[] _someNumbers;
public FooBar() {
_someNumbers = new int[2];
_someNumbers[0] = 1;
_someNumbers[1] = 2;
}
}
// in some other method somewhere...
FooBar foobar = new FooBar();
Debug.Log(foobar.SomeNumbers[0]);
我想知道的是,调用 SomeNumbers 属性会导致堆分配吗?基本上它会导致创建数组的副本,还是只是一个指针?
我之所以问是因为我正在尝试解决由于返回数组的函数而导致的一些 GC 问题,并且我想确保我缓存一些像这样的值的想法实际上会有所作为
【问题讨论】:
-
数组是通过引用传递/返回的,所以是的,你的属性基本上只是返回一个指针。
标签: c# arrays properties garbage-collection heap-memory