@artemgoruchev
solitare ????

Исключение не обработано, как исправить?

Привет всем! Заявлю сразу, что я дикий новичок на платформе .NET. Разве что имел малое дело с языком Python... К делу!

В процессе компилятор останавливается на этом:
class ReadyLoad 
{
    general_form gm_Link = new general_form();
}

То бишь при создании экземпляра. И выводит: (Исключение не обработано) System.StackOverflowException
HResult=0x800703E9
Сообщение = Exception_WasThrown


В классе general_form я создаю экземпляр ReadyLoad.

Могло бы это как-то повлиять?
  • Вопрос задан
  • 1173 просмотра
Решения вопроса 1
vabka
@vabka Куратор тега .NET
Токсичный шарпист
В классе general_form я создаю экземпляр ReadyLoad.

Это и повлияло.
Ошибка "System.StackOverflowException" говорит о том что у тебя переполнился стек.
Стек имеет ограниченные размеры, и каждый раз, когда вызывается функция - из него выжирается кусок, а когда функция завершается - этот кусок освобождается

А теперь о произошедшей ситуации:
Класс ReadyLoad после компиляции превращается вот в это:
internal class ReadyLoad {
  private general_form gm_Link;
  public ReadyLoad() {
    gm_Link = new general_form();
  }
}

Конструктор - это тоже функция.
Соответственно, когда вызывается конструктор new ReadyLoad - внутри него вызывается new general_form(), а внутри него также вызывается конструктор new ReadyLoad() и так, пока стек не переполнится.
Когда стек переполняется - твоя программа убивается.

В твоём случае необходимо от этого цикла избавиться)
Как именно - зависит от случая.

PS: О том, что такое стек можешь почитать тут: https://metanit.com/sharp/tutorial/2.16.php
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы