C#属性引用类型?

Ale*_*lex 3 c#

我从C#开始,我有一个问题.

说我有一个对象:

Person
Run Code Online (Sandbox Code Playgroud)

以及名为Cat的人物:

Person.Cat
Run Code Online (Sandbox Code Playgroud)

如果我做:

Cat cat = new Cat(stuff);
cat.Name = "Alan";
Person.Cat = cat;
Run Code Online (Sandbox Code Playgroud)

猫是猫直接参考吗?如果我做:

Person.Cat.Name = "John";
Run Code Online (Sandbox Code Playgroud)

猫的名字会是"约翰"吗?

因为我觉得我之前尝试过这样的事情,并且我得到了NullReferenceException或类似的东西.

Ed *_* S. 5

如果'cat'是一个类,即一个引用类型,那么该引用的副本将存储在person.Cat中.这意味着对'cat'属性的更改将反映在person.Cat中.但是,由于它是原始引用的副本,因此行为如下:

Cat cat = new Cat(stuff);
cat.Name = "Alan";
Person.Cat = cat;
cat.Name = "Will";  //Person.Cat.Name is now "Will"
cat = new Cat(stuff);
cat.Name = "Greg";  
// Person.Cat is still named "Will".  
// The original reference now points  to a different object on the heap than does Person.Cat.
Run Code Online (Sandbox Code Playgroud)

如果Cat是一个值类型,那么副本是在赋值时生成的,一个中的更改不会反映在另一个中(当然,一个struct可以有一个引用类型属性或公共字段,但你明白了).