Benutzersteuerelement-Array weist jede Steuerung ein Verfahren mit dem Text eines Etikett dort zu setzen, sondern ein Nullreferenceexception bekommen. Hilfe!

StackOverflow https://stackoverflow.com/questions/1613350

Frage

So erstelle ich ein Array:

TorrentItem[] torrents = new TorrentItem[10];

Die TorrentItem Kontrolle hat eine Methode namens SetTorrentName (string name) :

private void SetTorrentName(string Name)
{
    label1.Text = Name;
}

Ich bin mit einer for-Schleife 10 TorrentItems bevölkern etwa so:

private TorrentItem[] GetTorrents()
{
    TorrentItem[] torrents = new TorrentItem[10];
    string test = "";

    for (int i = 0; i < 10; i++)
    {
          test = i.ToString();
          TorrentItem[i].SetTorrentName(test); //I get a null reference error here. 
          //What am I doing wrong?
    }  
War es hilfreich?

Lösung

Sie erstellen ein Array von Verweisen auf 10 Objekte, aber Sie die 10 Objekte im Array nicht erstellen. Alle Feldelemente werden null bis ansonsten initialisiert.

for( int i = 0; i < 10; ++i )
{
    torrents[i] = new TorrentItem();
    /* do something with torrents[i] */
}

Allerdings könnte der Name der Initialisierung wahrscheinlich in den Konstruktor gesetzt werden.

Andere Tipps

Sie müssen jeden einzelnen TorrentItem initialisieren:

for (int i = 0; i < 10; i++)
{
      TorrentItem[i] = new TorrentItem(); //Initialize each element of the array
      test = i.ToString();
      TorrentItem[i].SetTorrentName(test); //I get a null reference error here. 
      //What am I doing wrong?
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top