在C#中,以下内容是否节省任何内存?
private List<byte[]> _stream;
public object Stream
{
get
{
if (_stream == null)
{
_stream = new List<byte[]>();
}
return _stream;
}
}
编辑:对不起,我想我应该更具体一些。
具体来说,使用“对象”而不是列表...我想这可能是一个线索,因为这样做很奇怪。
最佳答案
这样可以节省很少的内存。空的List<byte[]>
要占用的内存量是字节大小。
原因是您的引用变量_stream
仅需要分配足够的内存来保存对对象的引用。分配对象后,它将占用一定数量的内存,该内存可能会随着时间的推移而增长或缩小,例如,当将新的byte[]
添加到List
时。但是,该对象的引用占用的内存将保持不变。
这更简单,更不容易引起您的头痛:
private List<byte[]> _stream = new List<byte[]>();
public object Stream
{
get
{
return _stream;
}
}
尽管在大多数情况下,返回对私有成员的引用(当它们是集合/数组等时)并不是最佳选择。最好返回
_stream.AsReadOnlyCollection()
。关于c# - 了解内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2029016/