@MatveyGogolev

Почему работает вызов нестатического метода в конструкторе класса?

Здравствуйте, есть класс дроби Fraction. В классе есть нестатический метод ShortenFraction, который сокращает дробь. Если при создании экземпляра класса нам ввели сократимую дробь, например 12/16, то ее надо сразу сократить. Приведенный код выполняет задачу. У меня вопрос: почему он работает? Мы вызываем нестатический метод в конструкторе, то есть экземпляра класса еще нет?
public Fraction(int numerator, int denominator)
    {
        if (denominator == 0)
            throw new ArithmeticException("Знаменатель = 0");
        this.numerator = numerator;
        this.denominator = denominator;
        ShortenFraction();       
    }
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
Мы вызываем нестатический метод в конструкторе, то есть экземпляра класса еще нет?

Место под него уже выделено, this есть => уже можно вызвать любой не статический метод.

Но это потенциальное пространство для ошибок, ведь компилятор не может проверить, что ты корректно всё инициализировал перед вызовом. На это даже многие инструменты для статического анализа выдадут предупреждение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы