.net Switch语句和随机数:并非所有代码路径都返回一个值.我必须包含默认值吗?

Guy*_*ito 0 .net c# random switch-statement

这是一个很小的函数,可以随机返回+1或-1

public static int PlusOrMinus()
{
    int chance = MyRandom.Random.Next(0, 2);

    switch (chance)
    {
        case 0:
            return -1;

        case 1:
            return 1;
    }               
} 
Run Code Online (Sandbox Code Playgroud)

编译器告诉我并非所有代码路径都返回一个值.就我而言,不可能不是0或1.

您是否必须始终包含这样的switch语句的默认大小写以进行编译?

Rik*_*ous 8

这可能有点简单:

return chance == 0 ? -1: 1;
Run Code Online (Sandbox Code Playgroud)

  • 它是一个三元运算符http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx (3认同)

Jam*_*iec 5

编译器不运行您的代码.因此,编译器无法知道定义的整数永远不会超出0-1的范围.

因此,是的,您必须提供默认或return外部switch.