在C#中使用数组的NullReferenceException

时间:2011-09-15 05:39:31

标签: c# arrays nullreferenceexception

我想创建一个包含我正在处理的所有Pushpin对象的数组。在尝试填充Array时,我收到NullReferenceException抛出未处理的错误。我已经阅读了尽可能多的文档,但无法解决发生的事情。

我至少尝试了以下内容:

Pushpin[] arrayPushpins;
int i = 0;
foreach (Result result in arrayResults)
                {
                    Pushpin pin;
                    pin = new Pushpin();
                    pin.Location = d;
                    myMap.Children.Add(pin);
                    arrayPushpins[i] = new Pushpin();
                    arrayPushpins.SetValue(pin, i);;
                    i++;
                }

和...

Pushpin[] arrayPushpins;
int i = 0;
foreach (Result result in arrayResults)
                {
                    Pushpin pin;
                    pin = new Pushpin();
                    pin.Location = d;
                    myMap.Children.Add(pin);
                    arrayPushpins[i] = new Pushpin();
                    arrayPushpins[i] = pin;
                    i++;
                 }

似乎没有任何工作......我每次都会收到NullReference错误。 有任何想法吗? 非常感谢! 将

4 个答案:

答案 0 :(得分:6)

问题是你没有初始化你的数组:

Pushpin[] arrayPushpins = new Pushpin[10]; // Creates array with 10 items

如果您事先不知道项目数,可以考虑使用IEnumerable<Pushpin>,例如:

IEnumerable<Pushpin> pushpins = new List<Pushpin>

答案 1 :(得分:1)

您没有初始化数组

 Pushpin[] arrayPushpins = new Pushpin[/*number goes here*/];
    int i = 0;
    foreach (Result result in arrayResults)
                    {
                        Pushpin pin;
                        pin = new Pushpin();
                        pin.Location = d;
                        myMap.Children.Add(pin);
                        arrayPushpins[i] = new Pushpin();
                        arrayPushpins.SetValue(pin, i);;
                        i++;
                    }

编辑添加:我会避免使用原始数组,而是使用类似List<Pushpin>的内容

答案 2 :(得分:1)

我认为你应该使用列表而不是数组。这样,您就不必事先知道列表中有多少元素。

答案 3 :(得分:0)

在您的代码中,仅声明数组,而不是初始化数组。您需要使用new关键字对其进行初始化。

Pushpin [] arrayPushpins= new Pushpin[50]; 

正如其他答案所推荐的那样,您可以使用列表或集合。