Benutzersteuerelement-Array weist jede Steuerung ein Verfahren mit dem Text eines Etikett dort zu setzen, sondern ein Nullreferenceexception bekommen. Hilfe!
-
06-07-2019 - |
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?
}
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