c# - 引用类型。我理解正确吗?

标签 c#

这很尴尬。我很久以前学过 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/

相关文章:

c# - ASP.NET 5.0 MVC6 的 Omnisharp sublime 文本错误

c# - 将 HttpResponseMessage 转换为 XML 对象

c# - 对 MFC/.net/WPF 感到困惑

javascript - 使用某些参数滚动到 View

c# - LINQ 的 orderby 子句中的 "Specified cast is not valid"错误

asp.net mvc 操作中的 c# 异步方法

c# - 连接字符串的最有效方法

C# Linq GroupBy

c# - 如何在 LINQ 中执行分组并获得 Iqueryable 或自定义类对象?

c# - 简单的注入(inject)器如何针对同一接口(interface)注册/解析单例集合