2016-08-30 72 views
-1

我對這段代碼有一些問題。我希望得到一些幫助。聲明一個新的類元素

class Alpha{ 
    string Name; 
    public Alpha(string name){ 
    this.Name = name; 
    } 
} 
class Beta{ 
    Alpha[] alpha_array; 
    string Name; 
    public Beta(Alpha[] alpha_array, string name){ 
    this.Alpha_array = alpha_array; 
    this.Name = name; 
    } 
} 

static void Main(){ 
    Beta betas = new Beta[10]; 
    for(int i = 0; i < betas.Length; i++){ 
    betas[i] = new Beta(new Alpha[1], "Bob"); 
    betas[i].alpha_array = new Alpha("George"); 
    Console.WriteLine(betas[i].alpha_array.Name); 
    } 
} 

這裏有什麼問題? 我會使用這段代碼,但是當我嘗試訪問alpha_array時,beta數組沒有alpha_array元素。如何做到這一點,我無法自己弄清楚。

感謝您的任何幫助。

+2

它是私有的。類中的所有屬性默認爲私有。您可以將其更改爲內部或公共。示例:'公共Alpha [] alpha_array' –

回答

2

您在代碼中有一些錯誤:

所有字段是private如果沒有指定訪問修飾符。你應該讓他們public。例如:

class Alpha{ 
    public string Name; 
    public Alpha(string name){ 
    this.Name = name; 
    } 
} 

class Beta{ 
    public Alpha[] alpha_array; 
    public string Name; 
    public Beta(Alpha[] alpha_array, string name){ 
    this.Alpha_array = alpha_array; 
    this.Name = name; 
    } 
} 

你想的Alpha一個實例分配給AlphaArray

betas[i].alpha_array = new Alpha("George"); 

我想你想要的是以下幾點:

for(int i = 0; i < betas.Length; i++){ 
    betas[i] = new Beta(new Alpha[]{ new Alpha("George")}, "Bob"); 
    Console.WriteLine(betas[i].alpha_array[0].Name); // prints George 
} 
+0

數組的隱式實例,對於初學者來說migth會有點混淆 –

+0

「implicit instance」是什麼意思?我特別沒有使用「隱式」類型的數組。我使用了一個數組初始化器簡寫。 – Kenneth

+0

是的,我在真實的代碼中公開了類,但沒有它們的變量,我認爲這將解決我的問題,謝謝。 –