NullReferenceException从列表[重复项]中删除项目时>> [

问题描述 投票:0回答:3
以下代码在_items.Clear()步骤上给了我一个Null引用异常,我不知道为什么。

public void PlotDate() { if (_data == null) return; _items.Clear(); _items.Add(new Graph { Name = "by date", Items = _data.GroupBy(e => string.Format("{0:yyyy-MMM}", e.Date)) .Select(g => new Item { Key = g.Key, Value = g.Sum(x => x.Size) }) .OrderByDescending(e => e.Value) .ToList() }); }

_items是在xaml前端中显示的图的可绑定集合。在这种情况下,该图仅显示了一系列日期中所有大小的总和的饼图。在该类中,有几种方法可以显示几乎相同的不同数据,它们基本上只是对数据进行不同的分组。

奇怪的是,无论我选择哪一个,第一个总是加载得很好,但是当我尝试打开第二个时,它会抛出异常。首次打开视图时,它还会运行填充_data并运行_items.Clear的方法,因此当_items为空时,它可以正常工作。

我已将断点放在任何可以想到的地方,以尝试查看发生了什么,但没有任何内容设置为null。在_items.Clear步骤运行之前,_items的计数为1,然后在计数下降到0后立即引发异常。

我也尝试过使用_items.RemoveAt(0),并将其放在添加新图形之后,并且执行相同的操作。

发生了什么事?

编辑:

我将包括这一部分,可能会有用。 UI上的显示绑定到项目,项目由项目确定,因此可能是问题所在。不过,我无法更深入地了解,查看NotifyOfPropertyChange的定义不会产生任何有用的信息。partial void OnItemsChanged(); public BindableCollection<Graph> Items { get { return _items; } set { if (value == _items) return; _items = value; OnItemsChanged(); NotifyOfPropertyChange("Items"); } }
以下代码在_items.Clear()步骤上给了我一个Null引用异常,我不知道为什么。 public void PlotDate(){如果(_data == null)返回; _items.Clear(); ...
c# nullreferenceexception
3个回答
1
投票
如果没有其余代码,很难知道出了什么问题。调用Clear函数时,该异常可能会在其他地方发生。为了帮助您调试,您可以通过

0
投票
从堆栈跟踪中,我可以看到在Clear()调用触发的OnCollectionChanged事件中引发了异常。因此,您应检查此事件中发生了什么,并应在

0
投票
也许_items为空。只需在_items.Clear()行上添加一个断点并调试您的应用程序即可。
© www.soinside.com 2019 - 2024. All rights reserved.