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

それはプライベートです。クラス内のすべてのプロパティは、デフォルトではprivateです。それを内部または公的に変更することができます。例: '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; 
    } 
} 

あなたはAlphaArrayAlphaのインスタンスを割り当てるしようとしている:私はあなたが何をしたいと思います

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

配列の暗黙的なインスタンス、初心者のためにちょっと混乱します –

+0

'暗黙のインスタンス 'とはどういう意味ですか?私は具体的に '暗黙的に'型付き配列を使用しませんでした。私は、Array初期化子の短縮形を使用しました。 – Kenneth

+0

ええ、実際のコードではクラスを公開していましたが、変数はありませんでした。これが私のpdoblemを解決すると思います。 –

関連する問題