2016-06-14 16 views
0

Ich bin neu in C#, also könnte diese Frage einfach sein. Ich habe jedoch noch keine Lösung gefunden.Objekte zu einer leeren Liste hinzufügen

Beschreibung des Problems:

Ich möchte erstellen und leeres Array [4] von Listen [Länge weiß nicht]. Später werde ich vier verschiedene Kanäle vorlesen und die Liste mit zuvor erstellten Objekten füllen.

Was ich getan habe bisher

class objChannel 
{ 
    private int channel; 
    public objChannel(int inputChannel) 
    { 
     channel = inputChannel; 
    } 

    public int Channel {get {return channel;}} 
} 

List<objChannel>[] listChannel = new List<objChannel>[4]; 

listChannel[1].Add(objChannel(1)); 

Dies funktioniert nicht wegen eines null Fehler.

Im Moment habe ich eine Arbeit um wie folgt aus:

List<objChannel>[] listChannel = {new List<objChannel> { new objChannel(1) }, 
            new List<objChannel> { new objChannel(2) }, 
            new List<objChannel> { new objChannel(3) }, 
            new List<objChannel> { new objChannel(4) }}; 

Doch dies wird mir nicht leere Liste.

+0

Zuerst müssen Sie 'listChannel [1]' instanziieren und dann können Sie die Instanzmethode 'Add' aufrufen. – Habib

+0

Sie wollen einen _single_ Container von 'objChannel' oder Sie möchten einen _container von Containern_ von' objChannel' ?? –

Antwort

3

, wenn Sie Ihre Array von Listen zu initialisieren, müssen Sie auch leere Listen erstellen wie:

List<objChannel>[] listChannel = {new List<objChannel>(), new List<objChannel>(), new List<objChannel>(), new List<objChannel>()}; 

oder

for(int i = 0; i<4; i++) 
{ 
    listChannel[i] = new List<objChannel>(); 
} 
+0

Gibt es eine Option, dies mit noch weniger Code zu tun? Ich muss ein ähnliches Ding machen, das 17 objChannels hat. Ich möchte vermeiden, so oft "neue Liste ()" zu schreiben. – paj

+0

ja, nach dem Erstellen der ListChannel-Array, verwenden Sie eine for-Schleife zum Erstellen neuer Liste Objekte, siehe aktualisierte Antwort –

+0

Danke. Ich dachte, es gäbe einen geheimen Code, den ich noch nicht kenne. Scheint so zu sein, dass ich es einfach "for loop" oder "while" machen muss. – paj

1

Der Grund Ihrer ersten Code versagt ist, weil Sie müssen instanziieren Sie die listChannel[1] und dann können Sie die Instanzmethode nur wie folgt aufrufen:

Der andere Punkt zu beachten ist, dass der Array-Index mit 0 und nicht 1 beginnt. (Obwohl nicht sicher, ob diese Verwendung in der Frage beabsichtigt war).

+0

Danke @Habib für die schnelle Antwort. Das funktioniert. Jetzt habe ich die folgende 'Liste [] listChannel = neue Liste [4]; listChannel [0] = new Liste (); listChannel [1] = neue Liste (); listChannel [2] = neue Liste (); listChannel [3] = neue Liste (); ' – paj

Verwandte Themen