Member 14620676 Ответов: 3

Стек над потоком конструктора


Почему stack over flow возникает, когда мы создаем новый класс в конструкторе нашего класса?

Что я уже пробовал:

Public class First
{
  Public First()
  {
    First op=new First();
  }
}

Dave Kreskowiak

Выполнение кода строка за строкой в отладчике показало бы вам проблему довольно легко и быстро.

3 Ответов

Рейтинг:
1

Richard Deeming

Вы создаете новый экземпляр этого класса, который вызывает конструктор, который создает новый экземпляр класса, который вызывает конструктор, который создает новый экземпляр класса, который ...

Вы создали бесконечный цикл. В конце концов, компьютер исчерпывает пространство стека и выбрасывает StackOverflowException.


Рейтинг:
1

Patrice T

Цитата:
Почему stack over flow возникает, когда мы создаем новый класс в конструкторе нашего класса?

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


Рейтинг:
0

RickZeeland

Вы, вероятно, хотите что-то вроде шаблон Singleton описанный здесь: Реализует паттерн Singleton в C#[^]