@Strel0KK

На сколько плохо иметь статический список внутри класса, в добавляются новые экземпляры этого класса через конструктор?

Имеется подобный код:
public class Name
{
      private static List<Name> NameList = new List<Name>();
      public Name()
      {
            NameList.Add(this);
      }
}

Пугает его "рекурсивность". На самом ли деле это плохо? И действительно есть ли рекурсия?
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
Здесь нет рекурсии. В каких-то случаях, наверное, это может быть полезно, но если всё оставить в таком виде, то это утечка памяти. Сборщик мусора не сможет собрать объекты. Без дополнительной информации нельзя сказать, хорошо ли это. Но скорее всего, проблему можно решить и более изящно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
yarosroman
@yarosroman Куратор тега C#
C# the best
А можно поинтересоваться смыслом данной конструкции? Это не рекурсивность, это вполне можно назвать циклической ссылкой, хотя и неявной. Сборщик мусора вполне собирает такие вещи.
Ответ написан
1. Это нарушает SRP
2. Это неявное глобальное состояние
3. Это создаст проблемы для GC
4. Это не рекурсия
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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