2016-08-30 2 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, массив бета-массивов не имеет элемента alpha_array. Как это сделать, я не могу понять это сам.

Спасибо за любую помощь.

+2

Это частная. Все свойства класса по умолчанию являются закрытыми. Вы можете изменить его на внутренний или публичный. Пример: 'public 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 Ань Array из Alpha:

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'? Я специально не использовал «неявно» типизированный массив. Я использовал сокращенную инициализацию Array. – Kenneth

+0

Да, у меня был класс, открытый в реальном коде, но не их переменные, я думаю, что это решит мой pdoblem, спасибо. –

Смежные вопросы