首页 > 解决方案 > 正在返回一个列表从 c# 中分配内存的属性

问题描述

如果我定义类似的东西会发生什么

private List<ObjData> _listObjs = new List<ObjData>();
public List<ObjData> ListObjs
{
   get { return _listObjs; }
}

并在代码中简单地添加到 ListObj?

ListObjs.add(element);

我有没有浪费内存?

标签: c#.net

解决方案


AList<T>是引用类型。通过在属性等中返回引用类型,您只共享便利贴本身(内存地址),而不是重新创建或复制内存(除了引用本身,它是堆栈分配的......)

所以答案是,是的,在堆栈上分配了非常少量的额外内存,并且一旦该引用超出范围就会被回收,但您不会再次在堆上分配或复制整个列表。

简而言之,您不必担心这一点。


推荐阅读