Изменение кода с оператора if на оператор switch в c # - PullRequest
1 голос
/ 08 мая 2019

Я никогда не использовал switchcase вместо if / else if, и мне интересно, как перейти от if / else if к выражению switch.Буду очень признателен за помощь!Задача состоит в том, чтобы указать количество ветра в текстовом поле (tbVindstyrke), и код должен сообщить пользователю, какое количество ватт в час (Вт / т), генерируемое ветром на ветряной мельнице.Он должен опубликовать результат в метке (lbWattprodusert).

Я получил его для работы с оператором if, и, как я понял, это занимает много вычислительной мощности компьютеров (или чего-то еще).,Итак, я хотел бы «переключить» его на оператор switch.

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

Ответы [ 2 ]

2 голосов
/ 08 мая 2019

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-else, который имеет дело с диапазонами.Это тоже с double диапазонами.Это невозможно, поскольку 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;
}
0 голосов
/ 08 мая 2019

Оператор 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);
}

Очень часто оператор switch является признаком отсутствия шаблона проектирования ... но это разговор на другой день.

...