Задать вопрос
@Iq51

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

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

Или лучше обойтись без ссылочных типов в структуре?
  • Вопрос задан
  • 483 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
devspec
@devspec
Помогло? Отметь решением
Делайте, как того требует ситуация. Ограничений никаких нет.
Возможно, будут некоторые неудобства при сохранении в БД или сериализации, но это опять же зависит от ситуации и есть масса решений, позволяющих от этих неудобств избавляться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Нужно быть осторожным при их копировании.

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

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

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

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