首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#对象与内存管理

C#对象与内存管理
EN

Stack Overflow用户
提问于 2015-01-09 19:55:30
回答 3查看 185关注 0票数 1

假设我有以下代码,其中Car类只有一个属性:String modelname

代码语言:javascript
复制
Car c = new Car("toyota");
Car c1 = c;
Car c2 = c;
Car c3 = c;
Car c4 = c;
Car c5 = c;

这每一次都要做一份新的C型车吗?那么会有一个新的“丰田”字符串5倍多的记忆?还是“丰田”的字符串只会在记忆中出现一次?

编辑:添加这个相关链接,以防您有与我相同的问题,我认为它有助于数组或列表是否默认在c#中通过引用传递?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-09 19:56:30

不,“丰田”字符串只会在内存中出现一次,因为只有一个汽车对象,其中有6个引用指向它。

票数 6
EN

Stack Overflow用户

发布于 2015-01-09 19:57:05

汽车是参考文献型,所以答案是否定的。见:在c#中,引用类型和值类型之间有什么区别?

票数 3
EN

Stack Overflow用户

发布于 2015-01-09 20:00:50

分配引用类型只是将object的引用(换句话说,地址)复制到变量中。它不复制实际的data,因为引用类型变量只保存引用值,换句话说,是指示实际数据驻留在内存中的地址。因此,在这种情况下,您将有6个引用类型变量,它们保存对内存中相同地址的引用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27868196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档