我有一個具有刪除方法的四叉樹,並且每次從遊戲中刪除一個項目時,我都會調用此方法。問題是在foreach
循環中,該子變量爲空。我怎樣才能繞過這個方法,所以如果變量爲空它不會給我一個錯誤?在foreach循環中避免變量的空引用異常,可能爲空
private void CollapseChildren(RectangleTreeNode node)
{
foreach (RectangleTreeNode child in node.Children)
{
if (child == null)
{
return;
}
while (child.Items.Count > 0)
{
MoveUp(child.Items[0]);
}
}
node.Children = null;
}
這裏是刪除方法。
private void Remove(RectangleTreeNode node, RectangleTreeItem item)
{
node.Items.Remove(item);
item.Parent = null;
while (node != null)
{
node.ItemCount--;
if (node.ItemCount < 6)
{
CollapseChildren(node);
}
node = node.Parent;
}
}
如果該值爲null,則我不應該來遍歷nodes.Children
孩子,因爲如果我通過然後做環我處子變量得到的錯誤。意思是節點沒有孩子。
您的'return;'語句應該注意避免錯誤,儘管完全退出該方法可能並不完全符合您的要求。你可以詳細說明當值爲'null'時你想在該方法中發生什麼? – 2014-10-11 02:35:43
如果該值爲空,那麼我不應該在nodes.Children中循環遍歷子元素,因爲如果我循環完成,那麼我會在子變量中得到錯誤。含義節點沒有子節點 – 2014-10-11 02:37:59
我們的公司策略決不會像'node.Children = null'那樣設置集合null,總是創建一個像'node.Children = new RectangleTreeNode [0]'這樣的空集合。這避免了錯誤並且相當簡化了邏輯 – 2014-10-11 03:14:18