处理以下情况的首选方法是什么:
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错误的代码?
我怀疑我应该在这个函数的末尾或者在default switch case中抛出一些异常,但是可能有一个更好的解决方案。
发布于 2011-11-24 04:01:33
如果应用程序能够维护1..4协议,我更愿意在default情况下抛出超出范围的异常。异常反映了调用者的期望,他们将给我提供良好的数据。
如果您的编译器无法确定default案例解决了并非所有的代码路径,那么将return放在switch之后。但是c#编译器会把它做对了。
发布于 2011-11-24 04:00:29
default: return error_code将是我的解决方案。
发布于 2011-11-24 04:03:57
我可能会做这样的事。
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;这样做不也一样吗?
https://stackoverflow.com/questions/8252065
复制相似问题