3️⃣ Расскажи в чем разница между ссылочным и значимым типом данных?
Для ссылочных типов данных память всегда выделяется из управляемой кучи, а в стеке содержится только ссылка на объект, размещение объекта со временем инициирует Garbage Collector. Значимые типы располагаются в стеке. Объекты значимого типа существуют в двух формах: boxed и unboxed. Ссылочные только в boxed
4️⃣ Расскажи про упаковку и распаковку
Упаковка или boxing - преобразование знач. типа в объект из управляемой кучи, распаковка соответственно наоборот
Пример:
int x = 5;
Object z = x; // Упаковка, y указывает на упакованный объект
int y = z; // Распаковка
Упакованные срок жизни упакованного объекта дольше за счет нахождения в управляемой куче.
Неупакованные значимые типы легче ссылочных типов за счет:
1. Память в куче не выделяется
2. Нет дополнительных членов: указателя на типовой объект и индекса блока синхронизации
Обычно привожу в пример дженерики, которые появились для минимизации операций упаковки и распаковки, так как, в теории, мы легко можем использовать List<Object>
#ответы_к_собеседованию_csharp