@Iq51

Влияет ли на что-нибудь ссылочное поле в структуре C#?

Например:
struct MyStruct
{
    int id;
    MyClass myClass;
}

Или лучше обойтись без ссылочных типов в структуре?
  • Вопрос задан
  • 446 просмотров
Решения вопроса 1
devspec
@devspec
Помогло? Отметь решением
Делайте, как того требует ситуация. Ограничений никаких нет.
Возможно, будут некоторые неудобства при сохранении в БД или сериализации, но это опять же зависит от ситуации и есть масса решений, позволяющих от этих неудобств избавляться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Нужно быть осторожным при их копировании.

В твоём случае, в поле myClass хранится ссылка на область памяти в куче. При копировании value type( к чему относится struct) создаётся просто новое значение на стеке.
var a = 0;
var b = a; //на стек помещается значение 0. Число есть число, ни на что не ссылается

В копии структуры ссылочное поле инициализируется копией ссылки(а она ведет к тому же объекту на кучу) которая помещается на стек. Иными словами ты получишь поверхностную или shallow копию. При изменении свойств объекта ссылочного типа в одной структуре ты увидишь те же изменения и в поле копии.
Ответ написан
Ваш ответ на вопрос

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

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