2017-03-05 100 views
0

我有兩個類,class Aclass Bc#中的成員初始化

public class A 
{ 
    public int someNumber; 

    public A(int a) 
    { 
     someNumber = a; 
    } 
} 

現在class B具有字段是class A一個對象。在C + +有可能這樣做:

public class B 
{ 
    public A foo; 

    public B(int a) : foo(a) { } 
} 

但是這不工作在C#中。那麼如何在C#中解決這個問題,而不使用class A中的默認構造函數。更確切地說,如何編寫一個class B的構造函數,其參數爲someNumber的值爲foo

+1

這是不是真正的C++。你可以刪除C++標籤嗎? –

回答

5

你可以嘗試這樣的事:

public class B 
{ 

    public A thing; 

    public B(int a) 
    { 
     thing = new A(a); 
    } 
} 
+0

我想你的意思是把'thing'而不是'A'作爲作業。 –

+0

@MaxWeinzierl你血腥正確!我的錯。謝謝 – Christos

+0

@克里斯托斯哦,好的,謝謝。我認爲這是行不通的,因爲我認爲構造函數總是在構造函數的主體執行之前始終初始化所有類成員。如果某個成員沒有默認構造函數,則會導致錯誤。 – Morten