У меня опять удалось выкроить немного свободного времени и вот я снова здесь, добро пожаловать в очередной уютный тред.
Где-то в этой ветке уже мелькал консольный калькулятор, я решил пойти дальше, представляю вашему вниманию "Калькулятор без свичей 9000".
Особенностью данной реализации является возможность добавления новых операций без глобальных изменений в коде, достаточно добавить оператор и делегат в коллекцию.
Код:
delegate double Calc(double val1, double val2);
private readonly Dictionary<string, Calc> act = new Dictionary<string, Calc>();
public Form1()
{
InitializeComponent();
act.Add("+", (val1, val2) => val1 + val2);
}
Теперь если вызвать
Код:
double result = act["+"](2, 2);
то в результате получим число 4, что бы можно было делить/умножать/вычитать нужно добавить соответствующие операторы в коллекцию
Код:
act.Add("*", (val1, val2) => val1 * val2);
act.Add("-", (val1, val2) => val1 - val2);
act.Add("/", (val1, val2) => val1 / val2);
Данный метод отлично заменяет конструкцию switch { case "+": ... }
Остальные примеры реализации в приложенном проекте, потрошите его на здоровье.