這是代碼:爲什麼在這種情況下編譯器不會抱怨?
private TreeNode GetTopLevelNode(TreeNode childNode)
{
if (childNode == null)
throw new ArgumentNullException("childNode", "childNode is null.");
if (childNode.Parent == null) return childNode;
TreeNode node = childNode;
while (true)
{
if (node.Parent == null)
{
return node;
}
node = node.Parent;
}
}
while循環,只有當node.Parent == null,則節點將被退回,
爲什麼編譯器不會報告「並非所有的代碼路徑返回一個值「錯誤?
如果無法滿足'node.Parent == null',則不會返回樹節點。 編譯器無法檢測到這種情況?
我認爲你的代碼中存在一個bug:在while循環中:你不應該返回節點而不是node.Parent? – 2010-01-12 06:50:28
@Tommy,感謝您指出 – Benny 2010-01-12 06:54:23