Почему StackOverflow
От: Разраб  
Дата: 20.12.23 10:08
Оценка:
    public class Bar
    {
        public string Name { get; set; } = "Bob";  // <= StackOverflow 
        public List<Bar> Bars { get; set; } = new List<Bar> { new Bar { Name = "Martin" } };
    }
///............
            var bar = new Bar(); // <= StackOverflow
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: Почему StackOverflow
От: RushDevion Россия  
Дата: 20.12.23 10:45
Оценка: 6 (1) +7
Ну да. А ты чего хотел?
Ты же по сути создал бесконечный цикл вызова конструктора Bar-класса.
Ясно дело, стек рано или поздно кончится.
Re: Почему StackOverflow
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.12.23 15:57
Оценка:
Здравствуйте, Разраб, Вы писали:


Хорошая практика создавать пустой конструктор без параметров если он используется в том числе для десериализации
и солнце б утром не вставало, когда бы не было меня
Re[2]: Почему StackOverflow
От: GarryIV  
Дата: 27.12.23 07:40
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Хорошая практика создавать пустой конструктор без параметров если он используется в том числе для десериализации


И мутабельные поля в подарок, отличная практика!
WBR, Igor Evgrafov
Re[3]: Почему StackOverflow
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.12.23 07:44
Оценка:
Здравствуйте, GarryIV, Вы писали:


S>>Хорошая практика создавать пустой конструктор без параметров если он используется в том числе для десериализации


GIV>И мутабельные поля в подарок, отличная практика!

Поля то могут быть и немутабельными, а StackOverflow получишь
и солнце б утром не вставало, когда бы не было меня
Re[4]: Почему StackOverflow
От: GarryIV  
Дата: 27.12.23 07:51
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Поля то могут быть и немутабельными, а StackOverflow получишь

Ну если сериализовывать — десериализовывать то что у стартовом сообщении там че угодно можно поймать и стековерфлоу и память выжрать в 0 на циклических ссылках.
WBR, Igor Evgrafov
Re[5]: Почему StackOverflow
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.12.23 08:14
Оценка:
Здравствуйте, GarryIV, Вы писали:

S>> Поля то могут быть и немутабельными, а StackOverflow получишь

GIV>Ну если сериализовывать — десериализовывать то что у стартовом сообщении там че угодно можно поймать и стековерфлоу и память выжрать в 0 на циклических ссылках.
StackOverflow не зависит от мутабельности, а зависит от алгоритма!
Циклические ссылки разруливаются итд.

И как к этому вообще относится конструктор пустой конструктор по умолчанию, который используется!
и солнце б утром не вставало, когда бы не было меня
Re[6]: Почему StackOverflow
От: sergii.p  
Дата: 27.12.23 09:08
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> И как к этому вообще относится конструктор пустой конструктор по умолчанию, который используется!


пустой конструктор вроде подразумевает мутабельность. Поля то проинициализированы по-умолчанию, их желательно поменять на нужные. Хотя я не понял к чему тут пустые конструкторы вообще. Они вроде ортогональны первоначальной проблеме. Замечу, что в изначальном вопросе конструктор как раз пустой, но это не уберегло от переполнения.
Re[7]: Почему StackOverflow
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.12.23 09:22
Оценка:
Здравствуйте, sergii.p, Вы писали:

SP>Здравствуйте, Serginio1, Вы писали:


S>> И как к этому вообще относится конструктор пустой конструктор по умолчанию, который используется!


SP>пустой конструктор вроде подразумевает мутабельность. Поля то проинициализированы по-умолчанию, их желательно поменять на нужные. Хотя я не понял к чему тут пустые конструкторы вообще. Они вроде ортогональны первоначальной проблеме. Замечу, что в изначальном вопросе конструктор как раз пустой, но это не уберегло от переполнения.


Конструктор бы в стеке отображался. И можно точку останова поставить!
и солнце б утром не вставало, когда бы не было меня
Re[8]: Почему StackOverflow
От: sergii.p  
Дата: 27.12.23 11:10
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Конструктор бы в стеке отображался.


не ясно чем поможет конструктор в стеке. Смотрим в него, а он пустой! Новичок точно войдёт в ступор.

S> И можно точку останова поставить!


точку останова можно поставить и на new. Да и с ним получится как в анекдоте про карандаш и грифель. Кто-то придёт, увидит пустой конструктор, не поймёт глубоких смыслов и удалит код за ненадобностью.
Re[9]: Почему StackOverflow
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.12.23 11:14
Оценка:
Здравствуйте, sergii.p, Вы писали:

S>> И можно точку останова поставить!


SP>точку останова можно поставить и на new. Да и с ним получится как в анекдоте про карандаш и грифель. Кто-то придёт, увидит пустой конструктор, не поймёт глубоких смыслов и удалит код за ненадобностью.


Ну я то пишу про глубокие смыслы! "И опыт сын ошибок ..."
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.