Я читал книгу о C# и наткнулся на тему хранения значений в памяти. Экземпляр ссылочного типа всегда создается в куче, однако значение переменной сохраняется везде, где оно объявлено. Только локальные переменные (переменные, объявленные в методах [не анонимные]) и параметры метода живут в стеке.
Итак, мой вопрос: если я объявлю эти структуры как такие локальные переменные, будут ли они все помещены в стек?
struct A<T> where T : struct { }
struct B<T> where T : class { }
struct C { }
Мне просто интересно, может ли содержимое struct
влиять на то, где оно будет храниться в памяти.
Спасибо, гуру С#!
struct
контент на то, где он хранится. Помимо этого, где находитсяstruct
, это деталь реализации. В большинстве случаев это стек, но они могут быть и в куче (поля класса, асинхронные блоки, блоки итераторов и т. д.). Вы также можете найти это обсуждение SO интересным -heap-net" title="почему структуры хранятся в стеке, а классы хранятся в сети кучи"> stackoverflow.com/questions/815354/ - person Nikolai Samteladze   schedule 29.07.2015