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

时间:2019-05-08 19:07:05

标签: c# if-statement switch-statement

我从未使用过switchcase而不是if / else if,而且我想知道如何从if / else if转到切换语句。我非常感谢您的帮助!任务是在文本框(tbVindstyrke)中放入一定量的风,代码应告诉用户在风车中每小时产生的瓦数(W / t)。它应该将结果张贴在标签(lbWattprodusert)中。

据我所知,我已经将它与if语句一起使用,这占用了许多计算机处理能力(或某种程度)的能力。因此,我想将其“切换”为切换状态。

    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";
        }

3 个答案:

答案 0 :(得分:2)

switch语句使用常量值。

因此,这是有效的:

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范围也是如此。这是不可能的,因为switch不允许您使用范围。

如果您的范围是int,则可以假设在范围内为每个值写一个case,但这绝对没有道理。

说,如果值介于int 1-3之间,则要执行某些操作;如果值介于4-6之间,则要执行其他操作。您可以写类似下面的内容,但是那太荒谬了。最好坚持使用if-else

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;
}

答案 1 :(得分:0)

当您要基于单个值在多个选项之间进行选择时,switch语句很有用。如您在示例中所做的那样,当您要针对范围进行工作时,需要if语句。

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

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);
}

很多时候,转换语句是缺少设计模式的标志……但这又是一段对话。

答案 2 :(得分:0)

switch不适用于float并加倍values。但是,由于所有范围限制都是0.3的倍数,因此您可以使用将值除以0.3的技巧来实现您想要的目标,如下所示:

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;
      }
}