什么可以在这里无效?

时间:2014-11-20 06:05:56

标签: c# generics null windows-store-apps argumentnullexception

我清除Bing图钉的Bing Map然后打开弹出按钮后,我的应用程序崩溃了。这是我在调试器中看到的:

enter image description here

textblock绝对不是null - 它是在XAML中以声明方式定义的。

字符串列表(CurrentlyMappedPhotosets)不为空 - 如您所见,它包含一个字符串/的计数为1.

在尖叫镜头上看到的代码是:

int count = App.CurrentlyMappedPhotosets.Count;

这里有什么可以为空?

就在这之前,我打电话给ClearMap:

private void ClearMap()
{
    var mapLayerChildren = from c in DataLayer.Children select c;
    var kinderGarten = mapLayerChildren.ToArray();
    for (int i = 0; i < kinderGarten.Count(); i++)
    {
        if (kinderGarten[i] is Pushpin)
        {
            DataLayer.Children.Remove(kinderGarten[i]);
        }
    }

    CloseInfobox();

    App.CurrentlyMappedPhotosets.Clear(); 
    if (null != App.photosetLocationCollection)
    {
        App.photosetLocationCollection.Clear();
    }
    appbarbtnClearMap.IsEnabled = false;
    UpdateGUI(false);
}

...调用UpdateGUI():

private void UpdateGUI(bool resizeMap)
{
    appbarbtnRenamePhotoset.IsEnabled = App.CurrentlyMappedPhotosets.Count > 0;
    if (resizeMap)
    {
        ResizeMap();
    }
}

1 个答案:

答案 0 :(得分:2)

您是否查看过该集合中的值是否为空? 如果没有使用值构造,则任何非基本类型类默认为null。

因此,您可以拥有所尝试类型的空值。

我建议您通过将行更改为:

来进行测试
textblock0.Text = App.CurrentlyMappedPhotosets[0].HasValue ? App.CurrentlyMappedPhotosets[0].Value : "";