【发布时间】:2023-03-16 15:12:02
【问题描述】:
假设我有以下代码,其中 Car 类只有 1 个属性:String modelname
Car c = new Car("toyota");
Car c1 = c;
Car c2 = c;
Car c3 = c;
Car c4 = c;
Car c5 = c;
这是否会每次都制作一个新的 car c 副本?所以内存中会有一个新的“toyota”字符串 5 倍?或者“toyota”字符串只会在内存中出现一次?
编辑:添加此相关链接以防您遇到与我相同的问题,我认为这会有所帮助Are arrays or lists passed by default by reference in c#?
【问题讨论】:
-
您只是在创建引用,它们都将指向一个对象。
-
这是语言的一个基本方面,您应该对其进行详细研究。此处的答案不会为您提供所需的理解水平。
-
此外,C# 字符串是不可变的,每个唯一的字符串仅在内存中存在一次,即使您制作了汽车的 deep 副本
-
@DrKoch 谢谢,也很高兴知道这一点