重写if else进入switch

cod*_*der 1 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;
   }
Run Code Online (Sandbox Code Playgroud)

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

   switch (workedDays)
   {
     case (workedDays > 0 && workedDays <= 180):
       x=14;
       break;
     default:
       break;
   }
Run Code Online (Sandbox Code Playgroud)

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

我该如何解决?

Wil*_*lem 6

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

if (workedDays <= 180)
    x = 14;
else if (workedDays <= 540)
    x = 28;
else if (workedDays <= 1068)
    x = 42;
else 
    x = 56;
Run Code Online (Sandbox Code Playgroud)

通过这种else if结构,无需仔细检查最小值和最大值.