2 wycsun1991 wycSun1991 于 2014.08.17 11:04 提问

C# 并非所有的代码路径都返回值

public static string aa(string a)
{

        if (a == "")
        {
            MessageBox.Show("请输入。。。");
            return null;
        }
        else
        {
            string[] split = Regex.Split(a, ";", RegexOptions.IgnoreCase);
            foreach (string s in split)
            {
                return s;
            }

        }
    }

}

我写了这样一个方法,提示并非所有的代码路径都返回值,求解。。。怎样改代码?

4个回答

joeyluo57
joeyluo57   2014.11.24 16:16
public static string aa(string a)
{
        if (a == "")
        {
            MessageBox.Show("请输入。。。");
            return null;
        }
        else
        {
            string[] split = Regex.Split(a, ";", RegexOptions.IgnoreCase);
            foreach (string s in split)
            {
                return s;
            }
return  "";
        }
    }
}

抱歉,代码贴错了。以上才是我要贴的。

ykiss
ykiss   2014.08.23 18:06

foreach 里面的return 貌似只是跳出了 foreach循环
else里并没有返回值, 需要在else 里增加return 语句.

adailee
adailee   2014.09.05 10:30

public static string aa(string a)
{
if (a == "")
{
MessageBox.Show("请输入。。。");
return null;
}
else
{
string[] split = Regex.Split(a, ";", RegexOptions.IgnoreCase);
foreach (string s in split)
{
return s;
}
}
return null;
}

joeyluo57
joeyluo57   2014.11.24 16:14

这个方法是要求有返回的值得,是一个String类型的值,那么你的代码里面就必须是每一条执行的路径都有值的返回。
而在这段代码里面,虽然逻辑上是不会出现没有返回值的情况,但是编译器会判断出当split为空的时候,程序执行不到return的地方。所以应该再else里面的代码的最后加上一句 return "";

public static string aa(string a)
{
        if (a == "")
        {
            MessageBox.Show("请输入。。。");
            return null;
        }
        else
        {
            string[] split = Regex.Split(a, ";", RegexOptions.IgnoreCase);
            foreach (string s in split)
            {
                return s;
            }

        }
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!