Как я могу написать более эффективный код? Или почему декомпилятор создает код, который кажется менее эффективным, чем тC#

Место общения программистов C#
Anonymous
Как я могу написать более эффективный код? Или почему декомпилятор создает код, который кажется менее эффективным, чем т

Сообщение Anonymous »

При написании своей библиотеки я использовал ряд троичных выражений:

Код: Выделить всё

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

Вернуться в «C#»