c# - 了解内存

扫码查看

在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/

10-11 22:43
查看更多