c# - 正在返回一个列表从 c# 中分配内存的属性
问题描述
如果我定义类似的东西会发生什么
private List<ObjData> _listObjs = new List<ObjData>();
public List<ObjData> ListObjs
{
get { return _listObjs; }
}
并在代码中简单地添加到 ListObj?
ListObjs.add(element);
我有没有浪费内存?
解决方案
AList<T>
是引用类型。通过在属性等中返回引用类型,您只共享便利贴本身(内存地址),而不是重新创建或复制内存(除了引用本身,它是堆栈分配的......)
所以答案是,是的,在堆栈上分配了非常少量的额外内存,并且一旦该引用超出范围就会被回收,但您不会再次在堆上分配或复制整个列表。
简而言之,您不必担心这一点。
推荐阅读
- java - 更改 VS 代码中的 java.home 路径
- sql - 如何在嵌套查询中使用返回多于 1 条记录的 select 语句的 where 子句
- django - 在 Django Restframework 序列化程序中过滤模型
- r - 比较其他列的值后向数据框添加新列
- web - Github 500 错误页面无法加载
- docker - 为什么我有 var/lib/docker~ 目录并且可以安全删除?
- wpf - WPF 文本框到 ListBoxItem 绑定
- ios - UITableViewCell中UIListContentConfiguration和UIBackgroundConfiguration的基本使用?
- python - 在 Altair Plot 中单击以暂停鼠标悬停?
- python - 数据框使用新名称创建新列