我对对象关系真的很困惑! 我有两个类 Person 和 Address。以下是详细信息:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
private List<Address> _addresses = new List<Address>();
public void AddAddress(Address address)
{
_addresses.Add(address);
address.Person = this;
}
public List<Address> Addresses
{
get { return _addresses; }
set { _addresses = value; }
}
}
public class Address
{
public string Street { get; set; }
public Person Person
{
get; set;
}
}
Person 类中的 AddAddress 方法将地址添加到 Addresses 集合中,并为 Address 对象设置 Person。现在,在代码中我执行以下操作:
var person = new Person() { FirstName = "John", LastName = "Doe" };
person.AddAddress(new Address() { Street = "Blah Blah" });
person.Addresses[0].Person = null;
我认为它应该将 person 对象设置为 null,因为 Addresses[0].Person 指向原始的 person 对象。但它没有将其设置为空。这里发生了什么?
最佳答案
What is going on here?
简单说明:
变量(在本例中为“Person”)保存对象的引用
。在引擎盖下,这只是一个数字。当您将它分配给 null 时,您所做的只是停止该变量指向该对象。对象本身仍然存在。
-- 编辑
了解其工作原理的一种方法是站在您的计算机附近并指向它。你现在是一个变量,你的电脑是一个对象。现在停止指着电脑(放下你的 ARM )。现在你是一个被赋值为 null
的变量。计算机仍然存在,没有任何改变,唯一的区别是你现在不再指向它。
关于c# - 对对象中的引用感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1337875/