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





