Доброго времени суток, форумчане.
Недавно на просторах сети я встретил такой вопрос: "Перечислите пожалуйста преимущества и недостатки ссылочных и значимых типов перед друг другом."
Т.к. значимые типы хранятся в стеке, а не в куче, доступ к ним осуществляется быстрее, это понятно. Но как на счёт других аспектов? Вот тут уже у меня лично возникают вопросы. Перечислите пожалуйста основные преимущества и недостатки значимых и ссылочных типов.
https://forum.itvdn.com/t/zhiznennyj-czikl-peremennoj-value-tipa-v-pamyati/2897 - обратите пожалуйста внимание на этот пост. Тут весьма подробно изложена информация касательно распределения памяти, в частности работа и преимущества/недостатки стека, кучи и всего подобного.
"...Если все типы были бы ссылочными, то скорость работы программы очень резко бы упала. Ведь представьте, что при каждом обращении к типу Int32, то сколько бы раз нужно было бы выделять память в куче при создании переменной. Поэтому для ускорения работы, CLR предлагает нам «облегченные» — значимые типы. В такой переменной нет указателя на экземпляр, поля экземпляра размещаются в самой переменной. При этом переменные не обрабатываются сборщиком мусора. А также момент размещения в стеке достаточно быстр. Предположим мы создаем переменную Int32 — это 32-разрядное значение и среда знает уже изначально, сколько нужно выделить памяти для этой переменной, поэтому выделение происходит моментально... " - CLR via C# от Рихтера