C# 定义具有相同类的字段的类。带自引用的类?
您可以定义一个具有属于该类的成员字段的类,这似乎很奇怪C# 定义具有相同类的字段的类。带自引用的类?,c#,class,self-reference,C#,Class,Self Reference,您可以定义一个具有属于该类的成员字段的类,这似乎很奇怪 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; 最后一行导致错误。但是我有点
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.party.party电话在做什么。它应该首先计算jim.party,它是空的,所以它会导致错误,对吗?如果我先断言jim.party=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
jim.party
是一个空引用,所以您不能对其设置属性jim.party=jane代码>,则您应该能够设置引用。在这种情况下,您需要说jim.party.party=jim代码>,因为jim.party
的计算结果为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
jim.party
是一个空引用,所以您不能对其设置属性jim.party=jane代码>,则您应该能够设置引用。在这种情况下,您需要说jim.party.party=jim代码>,因为jim.party
的计算结果为jane
如果答案有效,您应该单击复选标记以指示该选项。由于您还没有这样做,请采取行动,看看如何这样做的一些细节。被接受和被提升的答案有助于其他人找到好答案如果答案有效,您应该单击复选标记以表明这一点。由于您还没有这样做,请采取行动,看看如何这样做的一些细节。被接受和被提升的答案有助于其他人找到好的答案