加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么在这种情况下编译器不会抱怨?

发布时间:2020-12-15 19:58:51 所属栏目:百科 来源:网络整理
导读:这是代码: 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 (t
这是代码:

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’,则不返回树节点.
编译器无法检测到这种情况?

解决方法

因为你正在使用while(true){,除了使用return之外没有其他方法可以退出循环.如果不能满足node.parent == null,那么它将是一个无限循环.因此,没有返回就无法通过循环,编译器也不会抱怨.

此外,您指定的代码几乎总是返回一个null TreeNode,这是您真正想要的吗?

编辑:我看到你解决了这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读