1

我有这个代码:

foreach (UIElement uiElement in list)
{
    uiElement.SetValue(Grid.ColumnProperty, colunmn++);
    uiElement.SetValue(Grid.RowProperty, _uiRoot.RowDefinitions.Count - 1);
    _uiRoot.Children.Add(uiElement);
}

它运行良好,但代码合同给了我一个警告:可能在空引用上调用方法,uiElement。

uiElement 怎么可能是空的?该列表是 a Listof UIElements,因此它应该遍历列表而没有任何空值。

4

2 回答 2

2

因为您可以将空值放在列表中,即使您可能不会

你可以做

foreach (UIElement uiElement in list.Where(e => e != null))
{
   uiElement.SetValue(Grid.ColumnProperty, colunmn++);
   uiElement.SetValue(Grid.RowProperty, _uiRoot.RowDefinitions.Count -1);
   _uiRoot.Children.Add(uiElement);
}
于 2013-06-12T20:46:19.763 回答
1

列表可以包含空引用。您可以将 null 插入到列表中。您还可以在列表中插入一个好的引用,然后稍后将其设置为 null。例如,如果我有一个 People 列表,我可以有这个列表:“Bob”、“Fred”。现在我从列表中抓取 Bob,做一些事情,然后将其更改为 null。列表包含参考而不是项目的列表。所以它指向项目所在的位置。现在,当您遍历列表时,位置 0 现在为 null,因为 Bob 现在所在的引用包含 null。

于 2013-06-12T20:44:43.033 回答