处理switch语句

Yip*_*Yay 0 c# design-by-contract return switch-statement

处理以下情况的首选方法是什么:

switch (numberOfActualBytes)
{
    case 1: return something1;
    case 2: return something2;
    case 3: return something3;
    case 4: return something4;
}
Run Code Online (Sandbox Code Playgroud)

我肯定知道numberOfActualBytes由于使用过的合同是在范围内1-4.

我该如何编写不会导致not all code paths return a value错误的代码?


我怀疑我应该在这个函数结束时抛出一些异常default switch case,但是可能有一个更好的解决方案.

drd*_*cox 8

default如果应用程序可以支持1..4合同,我更倾向于抛出超出范围的异常.该异常反映了调用者对他们将给我良好数据的期望.

如果您的编译器无法弄清楚该default案例解决了并非所有代码路径,那么请将其放在return后面switch.但是c#编译器会把它弄好.