Замена экшена If на код в c#

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113
Вопос в название темы.
Вот код ниже
C#:
//---- входные данные ----
string res = project.Variables["Mob_number_yandex"].Value;
//---- Логика распределения результатов ----
if (res=="ok")   
    return 0;
throw new Exception();
Как суда прикрутить еще логические операторы
Логические операторы
< - Меньше
> - Больше
== - Равно → это понятно как.
!= - Не равно
- Меньше или равно
>= - Больше или равно
Операторы дополнения
||
- Или
&& - И
 
  • Спасибо
Реакции: one

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 604
Баллы
113
(res != "ok")
(res <= 10)
( res >=3 && res <=10 )
и т.д.
 
  • Спасибо
Реакции: one и Roman48

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 809
Баллы
113
Вот тут можно почитать, ещё здесь.
Если будет мало, то можно погуглить по запросу оператор if else c# ;-)
 
  • Спасибо
Реакции: one и Roman48

one

Client
Регистрация
22.09.2015
Сообщения
6 796
Благодарностей
1 264
Баллы
113
Друзья, вы такие молодцы, я так вас люблю!

Неделю мучаюсь с одним не простым решением и все никак не мог найти пути с чего начать и вот, в этом топике, думаю что нашел его. Спасибо вам что вы есть! :D
 

one

Client
Регистрация
22.09.2015
Сообщения
6 796
Благодарностей
1 264
Баллы
113
Один вопрос, где я ошибаюсь?

C#:
//---- входные данные ----
string res = project.Variables["Var1"].Value;
//---- Логика распределения результатов ----
if (res=="ok" || res < project.Variables["Var2"].Value)   
    return 0;
throw new Exception();
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 697
Баллы
113
Один вопрос, где я ошибаюсь?

C#:
//---- входные данные ----
string res = project.Variables["Var1"].Value;
//---- Логика распределения результатов ----
if (res=="ok" || res < project.Variables["Var2"].Value)  
    return 0;
throw new Exception();
так вот < можно сравнивать только не строки. string res это строка. project.Variables["Var2"].Value это строка.
надо строки спарсить в нужный формат и тогда ими можно оперировать на c#
 

one

Client
Регистрация
22.09.2015
Сообщения
6 796
Благодарностей
1 264
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 697
Баллы
113

volody00

Client
Регистрация
06.09.2016
Сообщения
804
Благодарностей
828
Баллы
93
ты пишешь
C#:
res=="ok"
а затем пытаешься сравнить
C#:
res < project.Variables["Var2"].Value
у тебя же не числа, а строки. распиши подробнее логику, что хочешь сделать
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 796
Благодарностей
1 264
Баллы
113
В Var1 и Var2 числа как целые так и десятичные разделенные запятой и бывает только знак "-". Надо проверять содержание Var1 на наличие "-" или соответствие Var2 > Var1.
 

volody00

Client
Регистрация
06.09.2016
Сообщения
804
Благодарностей
828
Баллы
93
всё равно не вижу полную картину. если хочешь напиши в телегу, покажешь проект и расскажешь в чём идея, сделаю за 250 руб. А так вот держи, может тебе этого хватит (хотя получилось довольно извращенно, т.к. не понимаю до конца цели):
C#:
if(!project.Variables["Var1"].Value.Contains("-"))
{
    double chislo1 = Convert.ToDouble(project.Variables["Var1"].Value);
    double chislo2 = Convert.ToDouble(project.Variables["Var2"].Value);
    
    if (chislo2 > chislo1)   
    {
        project.SendInfoToLog("переменная var2 > var1");
    }
    else project.SendInfoToLog("ни одно из условий не является истинным");
}
else
{
    project.SendInfoToLog("переменная var1 содержит -");
}
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 796
Благодарностей
1 264
Баллы
113
всё равно не вижу полную картину.
Да, тут сложно обьяснить т.к. я сам пока не имею полной картины дальнейших действий. Надо посидеть, поломать голову. Но за пример спасибо, в нем есть с чего начать.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 796
Благодарностей
1 264
Баллы
113
Вот результат. Грамматика как?

Если переменная Var1 содержит "-" или меньше Var2, то выходим по ошибке. В противном случаем выходим по Ок.

C#:
if (!project.Variables["Var1"].Value.Contains("-"))
{
    double chislo1 = Convert.ToDouble(project.Variables["Var1"].Value);
    double chislo2 = Convert.ToDouble(project.Variables["Var2"].Value);

    if (chislo2 > chislo1)
    {
        throw new Exception();

    }
    else
    {
        return 0;
    }

}
else
{

    throw new Exception();

}
 

volody00

Client
Регистрация
06.09.2016
Сообщения
804
Благодарностей
828
Баллы
93
вроде должно работать. потести (может дяденьки поумнее что-то добавят)
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 396
Баллы
113
а так
C#:
try{
    if(double.Parse(var2) > double.Parse(var1))
        return 0;
}
catch{
    throw new Exception("в переменной не число");
}
throw new Exception("var2 не больше var1");
исправлено
 
  • Спасибо
Реакции: Ilshakin, one и volody00

one

Client
Регистрация
22.09.2015
Сообщения
6 796
Благодарностей
1 264
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 796
Благодарностей
1 264
Баллы
113
а так
C#:
try{
    if(double.Parse(var2) > double.Parse(var1))
        return 0;
}
catch{
    throw new Exception("в переменной не число");
}
throw new Exception("var2 не больше var1");
исправлено
Да, тоже работает, благодарю!
 
  • Спасибо
Реакции: Alexmd

volody00

Client
Регистрация
06.09.2016
Сообщения
804
Благодарностей
828
Баллы
93
  • Спасибо
Реакции: one и Alexmd

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113
if (res==project.Variables["Var1"].Value || res < project.Variables["Var2"].Value)
Так надо?
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 396
Баллы
113
if (res==project.Variables["Var1"].Value || res < project.Variables["Var2"].Value)
Так надо?
Так даже не скомпилируется. Вы пытаетесь сравнивать строки, как числа, чего сделать невозможно.
Я с самого первого поста не понимаю Вашей задачи.
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113
Так даже не скомпилируется. Вы пытаетесь сравнивать строки, как числа, чего сделать невозможно.
Я с самого первого поста не понимаю Вашей задачи.
Но тут не весь код, я имел ввиду

C#:
//---- входные данные ----
string res = project.Variables["Mob_number_yandex"].Value;
//---- Логика распределения результатов ----
if (res==project.Variables["Var1"].Value || res < project.Variables["Var2"].Value) 
    return 0;
throw new Exception();
С иф проблемы были, но сейчас все нормально
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 396
Баллы
113
Если у Вас все нормально с такой постановкой вопроса, то прошу рассказать, как Вы обманули компилятор, который ругается на подобные конструкции примерно так:
Компиляция кода Ошибка в действии "CS0019" "Operator '<' cannot be applied to operands of type 'string' and 'string'".
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113
Сейчас уже не нужно, но лучше бы иметь, полный код, может пригодиться
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113
Если у Вас все нормально с такой постановкой вопроса, то прошу рассказать, как Вы обманули компилятор, который ругается на подобные конструкции примерно так:
Нет, я не побывал, с иф кубиком все нормально, я спросил)
 

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