c#public static string,并非所有代码路径都返回一个值

时间:2016-02-19 19:52:40

标签: c# string return

我还没完全理解方法,我不知道为什么会发生这种情况......我试图让我的代码改为单词,我认为这是要走的路。

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            Random r = new Random();
            Console.WriteLine("Hi wanna play rock paper scissors?<press enter to continue>");
            Console.ReadKey();
            int user = 0;
            int ai = r.Next(1, 4);
            Console.WriteLine("Pick what youll show! (1-rock, 2-paper, 3-scissors) and press enter");
            user = Convert.ToInt32(Console.ReadLine());
            if (user > 3)
            {
                Console.WriteLine("ERROR! your number must be <= 3. <Press enter to close the program>");
                goto end;
            }
            if (user == ai)
            {
                Console.WriteLine("Its a draw! <press enter to continue>");
                goto end;
            }


            Console.WriteLine(user);

end:
Console.ReadKey();
        }
        public static string ntw (int user) //ntw: not all code paths return a value
    {
        if (user == 1)
            return "rock";
        if (user == 2)
            return "paper";
        if (user == 3)
            return "scissors";

    }
    }
}

提前致谢。

3 个答案:

答案 0 :(得分:9)

您方法的返回类型为1。这意味着你的方法应该总是返回一些字符串值。使用当前实现时,当用户变量的值为2325时,它会返回一些字符串。如果您使用值1调用此方法,该怎么办?编译器不知道该怎么做!

如果用户值不是23public static string ntw (int user) { if (user == 1) return "rock"; if (user == 2) return "paper"; if (user == 3) return "scissors"; return string.empty; // Here i am returning an empty string. }

,则您的方法应返回一些字符串
{{1}}

答案 1 :(得分:1)

你也可以使用switch语句,在这种情况下,如果用户不是1,2或3,默认会给你一个Null或一个空字符串:)

    public static string ntw (int user)
    {
        switch (user)
        {
            case 1:
                return "rock";
            case 2:
                return "paper";
            case 3:
                return "scissors";
            default:
                return null; // or return string.Empty
        }
    }

答案 2 :(得分:0)

如果值必须在1..3范围内(并且返回string.Empty字符串没有意义)那么你可以写:

public static string ntw (int user) 
{
    if (user == 1)
        return "rock";
    if (user == 2)
        return "paper";
    if (user == 3)
        return "scissors";
    throw new ArgumentException("Invalid choice");
}

并在程序中的某处处理异常。