为了账号安全,请及时绑定邮箱和手机立即绑定

C#中的引用类型

C#中的引用类型

慕容3067478 2019-12-26 13:49:26
考虑以下代码:public class Program{    private static void Main(string[] args)    {        var person1 = new Person { Name = "Test" };        Console.WriteLine(person1.Name);        Person person2 = person1;        person2.Name = "Shahrooz";        Console.WriteLine(person1.Name); //Output: Shahrooz        person2 = null;        Console.WriteLine(person1.Name); //Output: Shahrooz    }}public class Person{    public string Name { get; set; }}显然,当分配person1给person2且Name属性person2更改时,Nameof person1也将更改。person1并person2具有相同的参考。为什么在时person2 = null,person1变量也不会为null?
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

这两个person和person2是引用,同一个对象。但是这些是不同的参考。所以当你跑步时


person2 = null;

您仅更改reference person2,而reference person和相应的对象保持不变。


我猜想最好的解释方法是简化图示。这是以前 的情况person2 = null


如您所见,在第二张图片上person2没有引用任何内容(或者null严格来说,因为没有引用和引用null是不同的条件,请参见Rune FS的注释),同时person仍引用现有对象。


查看完整回答
反对 回复 2019-12-26
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您已更改person2为引用null,但person1此处未引用。

我的意思是,如果我们看一下person2,并person1指派那么这两个引用相同的对象之前。然后,您指定person2 = null,因此第2个人现在引用的是其他类型。它没有删除person2引用的对象。


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 558 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信