C#:并非所有代码路径都返回一个值

标签 c# compilation

我正在编写一个简单的 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/

相关文章:

c# - 模拟 Entity Framework 核心上下文

c# - 如何使用 libgit2 连接到 GitHub 存储库?

c# - 尽管隐式 null 检查,ReSharper 仍对可能的 System.NullReferenceException 发出警告

c - 如何在ubuntu上编译doom?

java - 有没有办法按类跟踪java编译时间?

c# - 在c#项目中编译c代码

c# - 将用户分配给组,Azure AD Graph Api

c++ - 循环遍历两个不同长度的 vector 时的优化

performance - 编程语言的速度是否取决于编译器?

java - 方法完成后程序继续运行