C# проблема с статическими конструкциями

Есть такой класс

public class Calculator
{
  private Calculator()
        {
            
        }

  public static Calculator WorkingWithConsole(string UserInput) 
        {
            var Calculator = new Calculator();
            string[] split = Regex.Split(UserInput, @"(\b[-+*\/]|[+-]?\d+[^-+*\/]\d+|[+-]?\d+|[- 
            +*\/()])").Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); 
            Checking(split);
            CalculatingFromConsole(split);
            return Calculator;
        }

public static Calculator WorkingWithFile(string FilePath)
        {
            var Calculator = new Calculator();
            if (!File.Exists(FilePath))
            {
                throw new FileNotFoundException("Файл не найден");
            }
            var oldPath = FilePath;
            var tmp = new[] { Path.GetDirectoryName(oldPath), "Result.txt" };
            _resultPath = Path.Combine(tmp);
            using (FileStream file = new FileStream(_resultPath, FileMode.Create)) {
                file.SetLength(0);
            }
            CalculatingFromFile(FilePath);
            return Calculator;
        }
private  void Checking(string[] line)
       {
         .....
       }
private  void CalculatingFromFile(string[] line)
       {
         .....
       }
}

В котором есть статические конструкторы.

Проблем в том что методы

CalculatingFromConsole(split);
Checking(split);

Не статичные, и поэтому ошибка an object reference is required for the non-static field

Можно ли, исправить эту ошибку, не превращая их в статичные методы?


Ответы (1 шт):

Автор решения: Boronnikov Andrey

 Смотри, такая ошибка возникает, когда ты пытаешься вызвать "non-static" метод без создания экземпляра класса. Попробуй так:

    public static Calculator WorkingWithConsole(string UserInput) 
    {
        var Calculator = new Calculator();
        string[] split = Regex.Split(UserInput, @"(\b[-+*\/]|[+-]?\d+[^-+*\/]\d+|[+-]?\d+|[- 
        +*\/()])").Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); 
        Calculator.Checking(split); //вот тут обращаться к создаваемому калькулятору
        Calculator.CalculatingFromConsole(split);
        return Calculator;
    }

И рекомендую ознакомиться со static подробнее. Тут очень хорошо всё рассказывается

→ Ссылка