首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中将代码从if语句更改为switch语句

在C#中将代码从if语句更改为switch语句
EN

Stack Overflow用户
提问于 2019-05-09 03:07:05
回答 3查看 61关注 0票数 1

我从来没有用过if/else if代替switch case,我想知道如何使用它。我真的很感谢你的帮助!任务是在文本框(TbVindstyrke)中输入风量,代码应该告诉用户风车中的风量是每小时多少瓦特(W/t)。它应该将结果发布到一个标签(lbWattprodusert)中。

我已经让它在if-statement上工作了,据我所知,这需要大量的计算机处理能力(或其他东西)。所以,我想把它换成switch-statement。

代码语言:javascript
复制
double Vs = 0;
private void btSjekkW_Click(object sender, EventArgs e)
{
    Vs = Convert.ToDouble(tbVindstyrke.Text);
    if (Vs >= 0 && Vs <= 2.4)
        lbWattProdusert.Text = 0 + " W/t";
    else if (Vs >= 2.5 && Vs <= 3.3)
        lbWattProdusert.Text = 2 + " W/t";
    else if (Vs >= 3.4 && Vs <= 5.4)
        lbWattProdusert.Text = 10 + " W/t";
}
EN

回答 3

Stack Overflow用户

发布于 2019-05-09 03:15:56

switch语句使用常量值。

因此,这是有效的:

代码语言:javascript
复制
var val = 2;
switch (val)
{
    case 1:
        // Do something if val is 1.
        break;
    case 2:
        // Do something if val is 2.
        break;
    default:
        // Do something for all values of val other than 1 or 2.
        break;
}

但是您希望转换处理范围的if-elsedouble ranges也是如此。这是不可能的,因为switch不允许使用范围。

如果您的范围是int,您可以假设为每个流行的值编写一个case,但这绝对没有意义。

比方说,如果值在int 1-3之间,你想做一些事情,如果它在4-6之间,你想做其他事情。你可以写一些像下面这样的东西,但那将是无意义的。你最好坚持使用if-else

代码语言:javascript
复制
var val = 2;
switch (val)
{
    case 1:
    case 2:
    case 3:
        // Do something if val is between 1-3.
        break;
    case 4:
    case 5:
    case 6:
        // Do something if val is between 4-6.
        break;
    default:
        // Do something for all other values of val
        break;
}
票数 2
EN

Stack Overflow用户

发布于 2019-05-09 03:15:57

当您想要根据单个值在多个选项之间进行选择时,switch语句非常有用。当您想要对范围进行操作时,就像您在示例中所做的那样,需要一个if语句。

下面是一个switch语句的示例。您可以看到,您在开始时指定了要打开的值,然后可以基于相等执行不同的操作。

代码语言:javascript
复制
string color = "red";

switch (color)
{
    case "red":
        // do something
        break;
    case "green":
        // do something
        break;
    case "blue":
        // do something
        break;
    default:
        throw new ColorUnknownException(color);
}

通常,switch语句是缺少设计模式的标志……但这是另一天的谈话。

票数 0
EN

Stack Overflow用户

发布于 2019-09-04 22:34:14

switch不支持float和double values。但是,由于所有范围限制都是0.3的倍数,因此可以使用将该值除以0.3的技巧来实现您所寻求的结果,如下所示:

代码语言:javascript
复制
int Vi;
double Vs = 0;
private void btSjekkW_Click(object sender, EventArgs e)
{
    Vs = Convert.ToDouble(tbVindstyrke.Text);
    Vi = (int)(Vs / 0.3);
    switch (caseSwitch)
    {
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
            lbWattProdusert.Text = 0 + " W/t";
            break;
        case 9:
        case 10:
        case 11:
            lbWattProdusert.Text = 2 + " W/t";
            break;
        case 12:
        case 13:
        case 14:
        case 15:
        case 16:
        case 17:
        case 18:
            lbWattProdusert.Text = 10 + " W/t";
          default:
            // what to do if Vs > 5.4
            break;
      }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56047480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档