我想创建一个包含我正在处理的所有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错误。 有任何想法吗? 非常感谢! 将
答案 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];
正如其他答案所推荐的那样,您可以使用列表或集合。