Найти в Дзене
33 подписчика

Значимые и ссылочные типы данных


Все переменные заносятся в стек. Но где хранится их значение зависит от типа данных.

Любая переменная относится к одному из типов данных.

1. Значимый тип данных. Значение переменной данного типа хранится прямо на стеке.

2. Ссылочный тип данных. Значение переменной хранится в куче (другая область памяти). А на стеке хранится ссылка на эту область памяти.

Так вот, когда мы присваиваем одной переменной другую переменную, то копируется то значение, которое хранится в стеке. То есть, для значимых типов копируется значение, а для ссылочных типов копируется ссылка (две переменные будут указывать на одну и ту же область в памяти).

Кроме этого:
1. Копирование также происходит при передаче параметров в функцию/метод.
2. При сравнении переменных на равенство (==) сравниваются значения, которые указаны в стеке

Как вам такой тип контента? Сначала тест, потом объяснения, а потом снова тест для закрепления материала (да, скоро будет еще тест)?

PS. Данная и другие темы будут более подробно разжеваны и показаны в курсе "C# Курс для продвинутых". Вы можете начало курса попробовать пройти бесплатно. Ну например данная тема подробнее рассказывается здесь. Попробуйте😉
Значимые и ссылочные типы данных  Все переменные заносятся в стек. Но где хранится их значение зависит от типа данных.  Любая переменная относится к одному из типов данных.  1. Значимый тип данных.
Около минуты