添加实例以引用另一个实例中的字段

对不起,这个问题可能以不同的forms存在,但我真的在各处搜索,看不到它。

我曾在C ++工作,习惯了指针。 我用C#模拟代码替换我的逻辑时遇到问题。

这是我的C#代码:

class Parent { public Parent A { get; set; } public Parent B { get; set; } } static void Main(string[] args) { Parent P1 = new Parent(); Parent X = new Parent(); Parent[] array = new Parent[10]; array[0] = P1; array[1] = P1.A; array[2] = P1.B; array[1]= X; //I expect P1.A to be X but it is null } 

我已经看到C#中有指针但是有更好的方法吗? 谢谢

编辑:

我的问题不完整。 对不起。 这是代码:

 abstract class Parent { protected virtual int foo(); } public class Son : Parent { public Parent A { get; set; } public Parent B { get; set; } protected override int foo() { return base.foo(); } } public class Daughter : Parent { public Parent A { get; set; } public Parent B { get; set; } } static void Main(string[] args) { Son P1 = new Son(); Parent X = new Daughter(); Parent[] array = new Parent[10]; array[0] = P1; array[1] = P1.A; array[2] = P1.B; array[1]= X; //I expect P1.A to be X but it is null } 

你要做的是:

  array[1].A = X; 

它为null,因为它未初始化。

您必须初始化属性。

 class Parent { public Parent A { get; set; } public Parent B { get; set; } Parent(Parent a, Parent b) { A = a; B = b; } } 

 Parent X = new Parent(); Parent P1 = new Parent(X, new Parent());