我正在编写一个简单的 WinForms 应用程序,我允许用户在 TreeView 控件中的 TreeNodes 周围拖动。我强制执行的规则之一是不允许用户将 TreeNode 拖到它自己的子节点中。我以递归方式编写了以下函数来检查目标节点的父级。编译后,我收到此函数的并非所有代码路径都返回值 的错误。据我所知,我确实在这个逻辑的每个可能分支上都有一个 return 语句......但我显然错了。请有人指出我的错误。
private bool IsDestinationNodeAChildOfDraggingNode(TreeNode draggingNode, TreeNode destinationNode) {
if (draggingNode.Nodes.Count == 0)
return false;
else {
if (draggingNode.Nodes.Contains(destinationNode))
return true;
else {
foreach (TreeNode node in draggingNode.Nodes)
return IsDestinationNodeAChildOfDraggingNode(node, destinationNode);
}
}
}
最佳答案
大概是指如果draggingNode.Nodes里面没有任何item,那么它就会从else中掉出来,退出这个函数,不返回任何东西。
也许这样做:
foreach (TreeNode node in draggingNode.Nodes)
return IsDestinationNodeAChildOfDraggingNode(node, destinationNode);
return false
关于C#:并非所有代码路径都返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1634261/