您可以定义一个具有该类成员字段的类,这似乎很奇怪。
public class Person
{
public string Name { get; set; }
public Person Spouse { get; set; }
}
现在,如果我打电话给那个班:
var jane = new Person();
var jim = new Person();
jane.Spouse = jim;
jim.Spouse.Spouse = jane;
最后一行会导致错误。但是我在想象jim.Spouse.Spouse调用的内容时遇到了一些麻烦。它应该先评估jim.spouse是否为null,这样会导致错误吗?如果我首先断言jim.Spouse = jane那么它应该有效吗?但后来我基本上说jane.spouse = jane。
如果一个类有一个相同类型的字段,那么它对该类做了什么?是否只允许该类的两个实例建立关系?这个类引用自己,所以它继承自己?我有点困惑,也想知道这是不好的做法。
答案 0 :(得分:4)
你在这里问过几件事,但一般情况下,在对象上引用相同类型(甚至是同一个实例)也没关系。
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
jim.Spouse
是一个空引用,因此您无法在其上设置属性。jim.Spouse = jane;
,那么您应该可以设置参考。在这种情况下,您可以说jim.Spouse.Spouse = jim;
,因为jim.Spouse
评估为jane
。