并非所有代码路径都在C#控制台应用程序中返回值错误代码:CS0161 [重复]

问题描述 投票:0回答:3

我有一个foreach循环中if和else条件的return语句。但是,我得到了这个错误。但是,当我在循环结束后添加return语句时,该错误将被消除。没关系!但是下面的代码有什么问题?

public static bool Function(List<String> list)
{
    foreach (var item in list)
    {
        if(item != "test")
        {
            return false;
        }
        else
        {
            return true;
        }
        //return false
    }
}
c#
3个回答
0
投票

如果list为空(即没有项目)或为空,则循环将不会运行。这意味着代码无法到达任何return语句,因为它们都在循环内。在这种情况下,程序无法知道从该方法返回什么值。通过该方法的“路径”不会返回值。

这是不可能的情况-非无效方法必须返回something,因此编译器将不允许您构建和运行程序,直到您通过在末尾添加额外的return语句来解决它为止循环结束后,以介绍我​​描述的情况。


0
投票

[list可以为空,foreach不会执行任何迭代,因此您应该在foreach块之外返回一个值

public static bool Function(List<String> list)
{
    foreach (var item in list)
    {
        if(item != "test")
        {
            return false;
        }
        else
        {
            return true;
        }
        //return false
    }
    return false;
}

0
投票

您应该像这样编辑代码来解决此问题,或者检查列表是否为空。

public static bool Function(List<String> list)
{
    foreach (var item in list)
    {
        if(item != "test")
        {
            return false;
        }
    }
  return true;
}
© www.soinside.com 2019 - 2024. All rights reserved.