Как заменить огромный SWITCH кубиком C#

Aleksey575

Client
Регистрация
21.03.2020
Сообщения
30
Благодарностей
6
Баллы
8
В шаблоне есть вот такой блок со стандартным switch-ом. Дальше по шаблону нужно будет ещё делать такие же блоки, что очень не удобно.
Как заменить это одним кубиком C#
Снимок.PNG



Логика простая:
если var = test1, значит в переменную "get" положить значение http://site/1
если var = test2, значит в переменную "get" положить значение http://site/2
если var = test3, значит в переменную "get" положить значение http://site/3
else {Выход по красной ветке};
-------------------------------------------

Весь форум перерыл, нашёл тему подходящую, но этот код не работает.
C#:
if(project.Variables["SUMMA"].Value == "123") project.Variables["skruglitel"].Value = "0";
if(project.Variables["SUMMA"].Value == "125") project.Variables["skruglitel"].Value = "1";
if(project.Variables["SUMMA"].Value == "225") project.Variables["skruglitel"].Value = "2";
И здесь нет else, выхода по красной ветке
 

Nord

Client
Регистрация
22.03.2012
Сообщения
2 373
Благодарностей
1 433
Баллы
113
Нужно юзать Switch - Case

Вот как пример
C#:
    //Вносим в запрос тип файла изображенния из входных настроек
    string itype = null;
    string Fi = project.Variables["IMAGE_FILE_TYPE"].Value;
        switch (Fi)
            {
                case "Все": itype = "";break;
                case "Jpg":itype = "jpg";break;
                case "Png":itype = "png";break;
                case "Gif":itype = "gif";break;
            }
 
  • Спасибо
Реакции: Aleksey575

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 448
Благодарностей
564
Баллы
113
Как switch в кубике со множеством выходов через c# никак, разве что зелёная и красная.
А вообще было бы здорово иметь такую возможность в c# кубике.

Но думаю не будет реализовано, так как зенно под 5 версией c#
 

Aleksey575

Client
Регистрация
21.03.2020
Сообщения
30
Благодарностей
6
Баллы
8
Как switch в кубике со множеством выходов через c# никак, разве что зелёная и красная.
А вообще было бы здорово иметь такую возможность в c# кубике.

Но думаю не будет реализовано, так как зенно под 5 версией c#
Мне не нужен switch со множеством выходов.
Нужно просто менять значение одной переменной в зависимости от другой.

если var = test1, значит в переменную "get" положить значение http://site/1
если var = test2, значит в переменную "get" положить значение http://site/2
если var = test3, значит в переменную "get" положить значение http://site/3
else {Выход по красной ветке};


Все возможные значения а прописываю в условиях if
И если не одно из значений не совпадает, с записанными вариантами, то просто кубик выходит по красной ветке.

Я просто не знаю как правильноэто на языке c# Реализовать.

(Switch - Case здесь тоже не подходит)
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 448
Благодарностей
564
Баллы
113
Мне не нужен switch со множеством выходов.
Нужно просто менять значение одной переменной в зависимости от другой.

если var = test1, значит в переменную "get" положить значение http://site/1
если var = test2, значит в переменную "get" положить значение http://site/2
если var = test3, значит в переменную "get" положить значение http://site/3
else {Выход по красной ветке};


Все возможные значения а прописываю в условиях if
И если не одно из значений не совпадает, с записанными вариантами, то просто кубик выходит по красной ветке.

Я просто не знаю как правильноэто на языке c# Реализовать.

(Switch - Case здесь тоже не подходит)
Вам все верно подсказал автор выше.
switch(var)
{
case "test1":
// тут нужные действия
break;

case "test2":
break;

case "test3":
break;

//если ничего не подходит
default:
return null;
break;
}
 
  • Спасибо
Реакции: Aleksey575

Aleksey575

Client
Регистрация
21.03.2020
Сообщения
30
Благодарностей
6
Баллы
8
Вам все верно подсказал автор выше.
switch(var)
{
case "test1":
// тут нужные действия
break;

case "test2":
break;

case "test3":
break;

//если ничего не подходит
default:
return null;
break;
}
// тут нужные действия
Как присвоить значение переменной из кубика c#

case "test1":
// Вот здесь, как присвоить значение http://site для переменной get (чтобы значение сохранилось в переменных проекта)
break;
 

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 448
Благодарностей
564
Баллы
113
// тут нужные действия
Как присвоить значение переменной из кубика c#

case "test1":
// Вот здесь, как присвоить значение http://site для переменной get (чтобы значение сохранилось в переменных проекта)
break;
project.Variables["get"].Value = "test1";
 
  • Спасибо
Реакции: Aleksey575

Aleksey575

Client
Регистрация
21.03.2020
Сообщения
30
Благодарностей
6
Баллы
8

Вложения

Aleksey575

Client
Регистрация
21.03.2020
Сообщения
30
Благодарностей
6
Баллы
8
Можете исправить код, я что то не понимаю.
1Снимок.PNG
Снимок.PNG

C#:
switch(var)
{
case "test1":
project.Variables["get"].Value = "http://site/1";
break;

case "test2":
project.Variables["get"].Value = "http://site/2";
break;

case "test3":
project.Variables["get"].Value = "http://site/3";
break;

//если ничего не подходит
default:
return null;
break;
}
 
  • Спасибо
Реакции: artur23

Nord

Client
Регистрация
22.03.2012
Сообщения
2 373
Благодарностей
1 433
Баллы
113
У вас в 0й строке нет 40 символов. Ищите ошибку с другом кубике C# ( удалите все другие кубики c# или закомменитруйте в них код)

+ну и где присвоение извне значения переменной var по которой потом нужно сделать выбор?
 
  • Спасибо
Реакции: Meteorburn

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 448
Благодарностей
564
Баллы
113
Можете исправить код, я что то не понимаю.Посмотреть вложение 63784Посмотреть вложение 63785
C#:
switch(var)
{
case "test1":
project.Variables["get"].Value = "http://site/1";
break;

case "test2":
project.Variables["get"].Value = "http://site/2";
break;

case "test3":
project.Variables["get"].Value = "http://site/3";
break;

//если ничего не подходит
default:
return null;
break;
}
Рекомендую сразу ознакомиться: https://metanit.com/sharp/tutorial/3.45.php шобы в дальнейшем вопрос со Switch отпал.

C#:
string myVariable = "test1";

switch(myVariable)
{
    case "test1":
        project.Variables["get"].Value = "http://site/1";
        break;

    case "test2":
        project.Variables["get"].Value = "http://site/2";
        break;

    case "test3":
        project.Variables["get"].Value = "http://site/3";
        break;

    // default value
    default:
        return null; // или через статус project.Variables["get"].Value = "empty";
        break;
}
 
  • Спасибо
Реакции: Nord и Aleksey575

Aleksey575

Client
Регистрация
21.03.2020
Сообщения
30
Благодарностей
6
Баллы
8
Рекомендую сразу ознакомиться: https://metanit.com/sharp/tutorial/3.45.php шобы в дальнейшем вопрос со Switch отпал.

C#:
string myVariable = "test1";

switch(myVariable)
{
    case "test1":
        project.Variables["get"].Value = "http://site/1";
        break;

    case "test2":
        project.Variables["get"].Value = "http://site/2";
        break;

    case "test3":
        project.Variables["get"].Value = "http://site/3";
        break;

    // default value
    default:
        return null; // или через статус project.Variables["get"].Value = "empty";
        break;
}
Спасибо огромное, всё работает, сохраню себе в сниппеты :-)
 

ex3maL

Client
Регистрация
22.05.2020
Сообщения
359
Благодарностей
267
Баллы
63
можно еще так сделать например.

Код:
// Кладем в vars значение из переменной var
string vars = project.Variables["var"].Value;

// Если в переменной var значение тест1 выполняется действие в скобках - кладем в перменную get значение site1.com
if(vars=="test1"){
    project.Variables["get"].Value = "site1.com";
}

// Если в переменной var значение тест2 выполняется действие в скобках - кладем в перменную get значение site2.com
// else if может быть и два и три раза и больше
// Главное чтоб условия начинались на if а последнее действие было else
else if(vars=="test2"){
    project.Variables["get"].Value = "site2.com";
}

else if(vars=="test3"){
    project.Variables["get"].Value = "site3.com";
}

// Если в переменной var значение тест4 (или любое другое - тест5 и т.д., любое кроме тест1 и тест2)
else{
    project.Variables["get"].Value = "site4.com";
}
 
  • Спасибо
Реакции: Aleksey575

Aleksey575

Client
Регистрация
21.03.2020
Сообщения
30
Благодарностей
6
Баллы
8
можно еще так сделать например.

Код:
// Кладем в vars значение из переменной var
string vars = project.Variables["var"].Value;

// Если в переменной var значение тест1 выполняется действие в скобках - кладем в перменную get значение site1.com
if(vars=="test1"){
    project.Variables["get"].Value = "site1.com";
}

// Если в переменной var значение тест2 выполняется действие в скобках - кладем в перменную get значение site2.com
// else if может быть и два и три раза и больше
// Главное чтоб условия начинались на if а последнее действие было else
else if(vars=="test2"){
    project.Variables["get"].Value = "site2.com";
}

else if(vars=="test3"){
    project.Variables["get"].Value = "site3.com";
}

// Если в переменной var значение тест4 (или любое другое - тест5 и т.д., любое кроме тест1 и тест2)
else{
    project.Variables["get"].Value = "site4.com";
}
Да, изначально хотел именно так сделать. Только в последнее else , нужно вставить функцию, которая пускает кубик по красной ветке.
Уже разобрался со switch, всё отлично работает. Но в любом случае спасибо вам за ваш вариант :-)
 
  • Спасибо
Реакции: ex3maL

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)