mr *_*fat 1 c# class self-reference
您可以定义一个具有属于该类的成员字段的类,这似乎很奇怪。
public class Person
{
public string Name { get; set; }
public Person Spouse { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我调用该类:
var jane = new Person();
var jim = new Person();
jane.Spouse = jim;
jim.Spouse.Spouse = jane;
Run Code Online (Sandbox Code Playgroud)
最后一行会导致错误。但我在想象 jim.Spouse.Spouse 调用正在做什么时遇到了一些麻烦。它应该首先评估 jim.spouse ,它为空,所以它会导致错误,对吗?如果我首先断言 jim.Spouse = jane 那么它应该起作用吗?但我本质上是说 jane.spouse = jane.
如果一个类有一个相同类型的字段,那么它对该类做了什么?它只是允许类的两个实例建立关系吗?该类引用自身,因此它继承自自身?我有点困惑,也想知道这是否是不好的做法。
您在这里问了几件事,但一般来说,在对象上引用相同类型(甚至相同实例)是可以的。
public class Thing {
private string name;
public Thing(string name) {
this.name = name;
}
public Thing Other {
get;
set;
}
public override string ToString() {
return this.name;
}
}
var o = new Thing("Foo");
o.Other = o;
Debug.WriteLine(o.Other.Other.Other.Other.ToString()); // Could go on forever
Run Code Online (Sandbox Code Playgroud)
jim.Spouse是一个空引用,因此您无法在其上设置属性。jim.Spouse = jane;,那么您应该能够设置参考。在这种情况下,您可能会想说jim.Spouse.Spouse = jim;,sincejim.Spouse的计算结果为jane。