簡體   English   中英

C#錯誤消息:並非所有代碼路徑都返回值

[英]C# Error message: Not all code paths return a value

我的代碼用於在二叉樹中搜索給定的相同值。

對我來說,它正在返回一個值。

有任何想法/幫助嗎?

public Boolean ContainsValue (Node<T> tree, int value)
{
    if (tree == null)
        return false;

    if (tree.Data.Equals(value))
        return true;

    if (value.CompareTo(tree.Data) < 0)
        return ContainsValue(tree.Left, value);

    if (value.CompareTo(tree.Data) > 0)
        return ContainsValue(tree.Right, value);
}

編輯:謝謝,我意識到一旦大家提到了問題,我做錯了什么。 (我現在覺得很傻)

如果不滿足任何條件,則需要默認(無條件)返回:

public Boolean ContainsValue (Node<T> tree, int value)
{
    if (tree == null)
        return false;

    if (tree.Data.Equals(value))
        return true;

    if (value.CompareTo(tree.Data) < 0)
        return ContainsValue(tree.Left, value);

    if (value.CompareTo(tree.Data) > 0)
        return ContainsValue(tree.Right, value);

    // here
    // return some_value;
    // or throw exception
}

我認為您的代碼應如下所示:

public bool ContainsValue (Node<T> tree, int value)
{
    if (tree == null)
        return false;

    if (tree.Data.Equals(value))
        return true;

    if (value.CompareTo(tree.Data) < 0)
        return ContainsValue(tree.Left, value);

    // thus you already verified case when value is less or equal to data
    // you don't need if condition here
    return ContainsValue(tree.Right, value);
}

您需要該方法的默認返回值。 您唯一的返回值在IF語句中,因此即使我們作為人類可以看到至少將執行一條IF語句,編譯器也會抱怨。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM