2016-08-30 78 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

是的,我在真实的代码中公开了类,但没有它们的变量,我认为这将解决我的问题,谢谢。 –