2015-11-06 86 views
2

对不起,这个问题可能以不同的形式存在,但我真的到处搜索,没有看到它。添加一个实例来引用另一个实例中的字段

我已经在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 
    } 
+0

父P1 =新父(); P1.A = new Parent(); P1.B = new Parent(); – Mariusz

+0

@TimSchmelter你是对的我改变了它 – user1932153

+0

@Mariusz对不起,我没有完全解释这个问题。我现在编辑 – user1932153

回答

0

你婉吨至做的是:

 array[1].A = X; 
0

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

您必须初始化属性。

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()); 
相关问题