繁体   English   中英

C#对象引用与列表中的对象

[英]C# Object References vs. Objects in a List

几天前,我问了一个与此类似的问题: C#对象数组是否存储所述对象的指针?

现在,我要问的是更多与代码相关的内容。 简要概述,我试图将许多对象存储到列表中,并且所述对象可能非常大(1〜2 GB)。 根据我的研究,.NET数据结构最多只有2 GB的内存。 所以我的问题是,我可以在一个列表中容纳1个或2个以上的对象吗?

场景:我有一个人类课堂,我试图将其存储在列表中。 这两行代码是否不同?

List<Human> humanList = new List<Human>();
Human human = new Human(attr1, attr2, attr3);
humanList.Add(human)

List<Human> humanList = new List<Human>();
humanList.Add(new Human(attr1, attr2, attr3))

第一组代码是否使用对人类对象的引用,以便能够在列表中存储更多对象? 同样,第二组代码是否试图将整个人类对象存储到列表中?

您的两个代码示例是等效的(假设您在创建human变量后未对其进行任何其他操作)。 new关键字创建一个引用 ,该引用存储在列表中-您只是内联创建该引用,而不是将其存储在变量中。

假设Human是一个class而不是struct ,则列表将包含对对象的引用,而不是对象本身。

Human对象的大小将对列表中可以存储的引用数量有较小的影响(整个系统内存可能比2GB .NET限制更多。)

这两个代码示例具有相同的效果。

这两个示例都存储对对象的引用。

您将能够在列表中存储1个或2个以上的对象。

这由.Net CLR和代码优化来管理。 在这两种情况下,您的代码都将更改,以存储对人类对象的引用。 唯一的区别是,第一个示例与本地方法的引用挂钩。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM