@UnityNoob

Чем отличаются типы данных в С#?

Начал изучение С#, появились вопросы по поводу типов данных.

1. Как я понял, типы данных глобально делятся на ссылочные и значимые типы. Я нашёл вот такое интересное определение:

...Эта классификация основана на том, где и как хранятся значения типов.
Для ссылочного типа значение задает ссылку на область памяти в "куче", где расположен соответствующий объект.
Для значимого типа используется прямая адресация, значение хранит собственно данные, и память для них отводится,
как правило, в стеке.

Что значит "как правило, в стеке"? Хорошо, а в каких тогда случаях данные значимых типов могут храниться в куче?

2. На том же ресурсе есть информация о том, что к ссылочным и значимым типам добавляют так же указатели и void. Меня интересуют указатели: в чём их отличие от всех остальных, что их ставят отдельно? И в чём вообще отличие ссылки от указателя?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
1. Я бы по началу не парился где там лежат значения. Тут главное надо уяснить, что у тебя хранится в переменной, например когда ты присваиваешь её значение другой переменной.
Значимые типы, как поля класса, лежат вместе с классом. А на стеке лежат только локальные переменные. Да и там есть куча нюансов и оптимизаций.
2. Указатели используются как часть работы с неуправляемым кодом. Некая попытка протащить сюда ещё и C.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы