【发布时间】:2009-08-06 20:32:54
【问题描述】:
enum SQLErrorCode{
OK = 0,
PARTIAL_OK = 1,
SOMEWHAT_OK = 2,
NOT_OK = 3,
};
代码 1:
int error = getErrorCode();
if((error == SQLErrorCode.PARTIAL_OK) ||
(error == SQLErrorCode.SOMEWHAT_OK) ||
(error == SQLErrorCode.NOT_OK) ||
(error < 0))
callFunction1();
else
callFunction2();
代码 2:
switch(error){
case SQLErrorCode.PARTIAL_OK:
callFunction1();
break;
case SQLErrorCode.SOMEWHAT_OK:
callFunction1();
break;
case SQLErrorCode.NOT_OK:
callFunction1();
break;
default:
callFunction2();
break;
}
我应该更喜欢哪种方法。就性能而言,应该没有太大的区别。如何处理 switch case 中的错误
编辑: 乔尔的解决方案:
switch(error) {
case SQLErrorCode.PARTIAL_OK:
case SQLErrorCode.SOMEWHAT_OK:
case SQLErrorCode.NOT_OK:
callFunction1();
break;
case SQLErrorCode.OK:
callFunction2();
break;
default: // error < 0 is handled
callFunction1();
break;
}
Q. 错误
【问题讨论】:
-
你在说C吗?不是 C#?
SQLErrorCode.前缀不合法 C. -
这是标记为 C,但 C 不允许 enumtype.enumval。你的意思是用 C# 标记它吗?
-
大部分 switch 示例都在改变原代码的含义。它们的含义更像是:“if( .... || (error NOT_OK) )”。如果这确实是您想要的,那么只需:if (error != 0)。
-
我已经修改了我的答案以供您编辑。新的应该处理所有的情况。基本概念:使用特定案例语句处理已知案例以及默认情况下的所有其他内容。
标签: c# c++ c if-statement switch-statement