Класс, ссылающийся на структуру - распределение - PullRequest
1 голос
/ 07 апреля 2020
class Foo
{
    public Bar StructProperty { get; set; }
    public int IntProperty { get; set; }
}

struct Bar
{
}

Предположим, у меня есть класс со свойством struct. Я делаю var foo = new Foo(). Как выкладывается foo.StructProperty в память? Это:

  1. в штучной упаковке в куче или
  2. , содержащиеся в адресном пространстве кучи, принадлежащем самому объекту foo (как размечено foo.IntProperty)?

1 Ответ

4 голосов
/ 07 апреля 2020
Содержится в адресном пространстве кучи, принадлежащем самому объекту foo (так же, как выложен foo.IntProperty)?

Это правильно.

Мантра «Структуры размещаются в стеке, классы размещаются в куче», здесь вводит в заблуждение - структуры, которые являются частью других объектов (других классов или структур), хранятся в памяти, используемой для этих объектов. int ничем не отличается от любого другого типа структуры в этом отношении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...