这很尴尬。我很久以前学过 C#,现在正试图理解这个关于类的问题(当然,因为它们是引用类型)。
问题是:如果我创建一个名为 Person
的类的两个新实例,并将一个实例命名为 P
,另一个命名为 Q
(谁关心我为什么称它为 Q
) 并将 P.Name
设置为 "James"
然后设置 Q.Name
到 "Suzie"
,P.Name
会被设置为 "Suzie"
吗?还是我理解不正确?
谢谢大家
感谢大家帮我解决这个问题。我假设向我解释的是这种情况。但是我看的教程里面解释的不是很清楚,几个月没电脑了,所以自己测试了一下。
P.s 我选择了第一个对我来说很清楚的正确答案。但注意到几个。再次感谢大家的帮助。
最佳答案
简短的回答是否定的,更改 Q.Name 不会影响 P.Name。如
var p = new Person();
var q = new Person();
p.Name = "James";
q.Name = "Suzie";
但是,如果 q 指向 p 实例,那么改变 q 也会改变 p。如:
var p = new Person();
var q = p;
p.Name = "James";
q.Name = "Suzie";
q 和 q Name 现在都是“Suzie”。
使用数据初始化器,您可以将第一个示例编写为:
var p = new Person { Name = "James" };
var q = new Person { Name = "Suzie" };
我认为这样更容易阅读。
关于c# - 引用类型。我理解正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14596547/