UserControl数组,每个控件都有一个方法来设置标签的文本,但是得到一个NullReferenceException.救命!

Ser*_*pia 1 c# iteration collections user-controls for-loop

所以,我创建了一个数组:

TorrentItem[] torrents = new TorrentItem[10];
Run Code Online (Sandbox Code Playgroud)

TorrentItem控制有一个名为方法SetTorrentName(字符串名称):

private void SetTorrentName(string Name)
{
    label1.Text = Name;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用for循环来填充10个TorrentItems,如下所示:

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?
    }  
Run Code Online (Sandbox Code Playgroud)

Tim*_*mbo 7

您可以创建对10个对象的引用数组,但不要在数组中创建10个对象.null否则所有数组元素都将被初始化.

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

但是,名称初始化可能会放入构造函数中.