[英]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.