UserControl配列。各コントロールにはラベルのテキストを設定するメソッドがありますが、NullReferenceExceptionが発生します。助けて!

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

質問

だから、私は配列を作成します:

TorrentItem[] torrents = new TorrentItem[10];

TorrentItem コントロールには、 SetTorrentName(string name)というメソッドがあります:

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

forループを使用して、次のように10個のTorrentItemを設定しています:

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?
    }  
役に立ちましたか?

解決

10個のオブジェクトへの参照の配列を作成しますが、配列に10個のオブジェクトを作成しません。すべての配列要素は、他の方法で初期化されるまで null です。

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

ただし、名前の初期化はおそらくコンストラクタに入れることができます。

他のヒント

各TorrentItemを初期化する必要があります:

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?
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top