0

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

switch (numberOfActualBytes)
{
    case 1: return something1;
    case 2: return something2;
    case 3: return something3;
    case 4: return something4;
}

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

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


我怀疑我应该在这个函数的末尾或 in 中抛出一些异常default switch case,但可能有更好的解决方案。

4

3 回答 3

8

default如果可以预期应用程序支持 1..4 合同,我更愿意抛出超出范围的异常。该异常反映了调用者对他们会给我提供良好数据的期望。

如果您的编译器无法确定该default案例解决了并非所有代码路径return,则将switch. 但是 c# 编译器会正确处理它。

于 2011-11-24T04:01:33.077 回答
0

default: return error_code将是我的解决方案。

于 2011-11-24T04:00:29.553 回答
0

我可能会做这样的事情。

declare temp_something = a default value; //Used to check for error.

switch (numberOfActualBytes)
{
    case 1: temp_something = something1; break;
    case 2: temp_something = something2; break;
    case 3: temp_something = something3; break;
    case 4: temp_something = something4; break;
}
return temp_something;

这不也一样吗?

于 2011-11-24T04:03:57.663 回答