使用 C# 赋值会创建对象的新副本还是使其成为别名?

我有一个对象ClassAobj.

之间有什么区别

ClassA obj2 = obj;

对比

ClassA obj2 = new ClassA(obj);

我的理解是否正确,第一个为 制作别名,obj而第二个制作了 的实际副本obj


POPMUISE
浏览 169回答 3
3回答

慕容3067478

您的第一个示例 ClassA obj2 = obj,本质上将一个新对象 obj2 设置为现有对象,希望是 ClassA 类型,这样,如果 obj 已经定义,则 obj2 在引用中与它相等,但在值中不相等。第二个例子是实例化的例子,将使用带1个参数的初始化器或重载方法,如果有多个重载方法,则传入obj作为重载方法的参数(意味着ClassA需要有一个重载方法)接受类型 obj 的对象作为参数)。
打开App,查看更多内容
随时随地看视频慕课网APP