Проблема концепции структуры .NET - PullRequest
2 голосов
/ 05 июля 2010

Почему конструктор не требуется в структуре?

Почему GC не удаляет структуры?

Ответы [ 2 ]

3 голосов
/ 05 июля 2010

Структура - это тип значения, поэтому он не управляется GC. Структуры могут объявлять конструкторы, но они ДОЛЖНЫ принимать параметры. Копии структур создаются и уничтожаются компилятором автоматически, поэтому конструктор по умолчанию не нужен

2 голосов
/ 05 июля 2010

Структура является типом значения, это означает, что когда вы обращаетесь к нему или передаете его, его значение передается. ( "Копируется")

с другой стороны, классы являются ссылочными типами. что если вы передадите это, будет передана только ссылка на него (поэтому оба теперь используют один и тот же объект)

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

...