2015-11-06 98 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()); 
相關問題