Листинг 1. Как написать простой калькулятор ч.2

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
 
namespace SimpleCalc
{
    public class Calculate
    {
        #region Переменные
        private string lineLog = ""; //переменная для ведения лога
        private string[] listOperatorsd = { "+", "-", "/", "*" }; //виды действий над числами
        private float answer = 0; //конечный результат
        private List<string> addChange = new List<string>(); //коллекция действий
        private FormCalculate frm; //форма калькулятора
        private string error=""; //переменная для ошибок
        #region Глобальные
        public string LineLog { get { return lineLog; } }
        #endregion Глобальны
        #endregion Переменные
        public Calculate(FormCalculate Frm)
        {
            this.frm = Frm; // передаем форму
        }
        public void ChoiceMethod(string Tag)
        {
            addChange.Add(Tag); //добавляем действие в класс
        }
        public string Count()
        {
            answer=0;
            float num = 0;
            lineLog = "";
            string strAction = "";
            int count = addChange.Count;
            try
            {
                //записываем первой число в качестве ответа
                answer = Convert.ToSingle(addChange[0]);
                //лог
                lineLog += answer.ToString();
            }
            catch (System.Exception err)
            {
                //если возникают ошибки, ловим
            }
            for (int i = 1; i < count; i++)
            {
                if ((count - i) > 1)
                {
                    //распознаем действие
                    strAction = defineArrayItemOperator(addChange[i]);
                    //перекидываем на следующее число
                    i++;
                }
                if (defineArrayItemNum(addChange[i]))
                {
                    //обрабатываем текстовый формат в число
                    num = Convert.ToSingle(addChange[i]);
                }
                //выполняем функцию расчета
                answer = action(num, strAction);
                lineLog += " " + strAction + " " + num;
            }
            //лог
            lineLog += " = " + answer.ToString();
            //очищаем коллекцию действий
            addChange.Clear();
            //передаем переменную в форму
            return answer.ToString();
        }
        private bool defineArrayItemNum(string tag)
        {
            /*
             * Функция, которая определяет, что строка является числом или нет
             * */
            bool ifNum = false;
            float number = 0;
            try
            {
                number = Convert.ToSingle(tag);
                ifNum = true;
            }
            catch(System.Exception err)
            {
                error = err.ToString();
                ifNum = false;
            }
            return ifNum;
        }
        private string defineArrayItemOperator(string tag)
        {
            /*
             * Проверям, есть ли в нашем списке подходящее действие над числом
             * */
            string oper = "";
            foreach (string list in listOperatorsd)
            {
                if (tag == list)
                {
                    oper = list;
                    break;
                }
                else
                {
                    oper = "";
                }
            }
            return oper;
        }
        private float action(float num, string action)
        {
            /*
             * Выполняем операцию над числом
             * */
            if (action != "")
            {
                switch (action)
                {
 
                    case "+":
                        {
                            answer += num;
                            break;
                        }
                    case "-":
                        {
                            answer -= num;
                            break;
                        }
                    case "/":
                        {
                            answer /= num;
                            break;
                        }
                    case "*":
                        {
                            answer *= num;
                            break;
                        }
                }
                action = "";
            }
            return answer;
        }
    }
}