2016-08-30 2 views
-1

Ich habe einige Probleme mit diesem Codestück. Ich würde etwas Hilfe schätzen.Deklaration eines neuen Klassenelements

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); 
    } 
} 

Was ist das Problem hier? Ich würde diesen Code verwenden, aber wenn ich versuche, das alpha_array zuzugreifen, hat das Betas-Array kein Alpha_array-Element. Wie das geht, kann ich selbst nicht herausfinden.

Danke für jede Hilfe.

+2

Es ist privat. Alle Eigenschaften in einer Klasse sind standardmäßig privat. Sie können es in intern oder öffentlich ändern. Beispiel: 'public Alpha [] alpha_array' –

Antwort

2

Sie haben ein paar Fehler im Code:

Alle Felder sind private wenn Sie keinen Zugriff Schlüssel angeben. Sie sollten sie public machen. Beispiel:

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; 
    } 
} 

Sie versuchen, eine Instanz von Alpha zu einem Array von Alpha zuzuweisen:

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

Ich denke, was Sie wollen, ist die folgende:

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

Implizite instance of array, es kann für Anfänger ein wenig verwirrend sein –

+0

Was meinst du mit' implizite Instanz'? Ich habe im Speziellen kein "implizit" typisiertes Array verwendet. Ich benutzte eine Array-Initialisierungskurzschrift. – Kenneth

+0

Ja, ich hatte die Klasse als öffentlich im echten Code, aber nicht ihre Variablen, ich denke, das wird mein Problem lösen, danke. –

Verwandte Themen