Код: Выделить всё
public INumber Level1()
{
INumber number = Level2();
Next();
return
txt == "-" ?
new Subtraction(number, Level1()) :
txt == "+" ?
new Addition(number, Level1()) :
txt == "/" ?
new Division(number, Level1()) :
txt == "*" ?
new Multiplication(number, Level1()) :
number;
}
Код: Выделить всё
public INumber Level1()
{
INumber number = Level2();
Next();
if (!(txt == "-"))
{
if (!(txt == "+"))
{
if (!(txt == "/"))
{
if (!(txt == "*"))
{
return number;
}
else
{
INumber number2 = new Multiplication(number, Level1());
result = number2;
}
}
else
{
INumber number2 = new Division(number, Level1());
result = number2;
}
}
else
{
INumber number2 = new Addition(number, Level1());
result = number2;
}
}
else
{
INumber number2 = new Subtraction(number, Level1());
result = number2;
}
return result;
}
Я не понимаю, почему декомпилятор выдает выходные данные, отличные от того, что я изначально написал, и я не уверен, что понимаю, как писать эффективный код.
Есть ли более эффективный способ написать этот код?
Подробнее здесь: https://stackoverflow.com/questions/783 ... -code-that