c# - 将 if else 重写为 switch

标签 c# if-statement switch-statement

我写了一些 if-else 语句,如下所示:

   if (workedDays > 0 && workedDays <= 180)
   {
     x= 14;
   }

   if (workedDays > 180 && workedDays <= 540)
   {
     x= 28;
   }

   if (workedDays > 540 && workedDays <= 1068)
   {
     x= 42;
   }
   else
   {
     x= 56;
   }

我试图将其重写为 switch 语句,如下所示:

   switch (workedDays)
   {
     case (workedDays > 0 && workedDays <= 180):
       x=14;
       break;
     default:
       break;
   }

但是,我收到错误消息 Cannot implicitly convert type 'bool' to 'int'

我该如何解决?

最佳答案

虽然@Jeroen 的switch(true) 答案可能有效,但我建议以下内容以提高可读性:

if (workedDays <= 180)
    x = 14;
else if (workedDays <= 540)
    x = 28;
else if (workedDays <= 1068)
    x = 42;
else 
    x = 56;

使用 else if 构造,无需仔细检查最小值和最大值。

关于c# - 将 if else 重写为 switch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786992/

相关文章:

c# - 内存不足,无法继续执行程序 VisualStudio

c# - 如何序列化 CustomLineCap 类的实例

c - 如何检查用户写的是什么字符?在C中

php - 从 MySQL 表中解析空行并输出为没有空单元格的 html 表

C程序切换语句

if-statement - 如何在 CASE in Progress 4GL 中编写此 IF 语句?

java - switch 语句中的 break 会终止 for 循环吗?

c# - 无法从 Action<T> 推断出类型参数,但可以从 Func<T> 推断出类型参数

c# - 在 Windows Phone 7 中显示不同的日历

java - 如何在 while 循环中添加多个用户提示?