• Вы здесь

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

    Нейро

    Ответ создан на основе результатов поиска

    Ссылочные и значимые типы данных отличаются способом сохранения объекта (переменной) в памяти компьютера 2:
    • Значимые типы размещаются полностью в стеке 2. Под каждую конкретную переменную выделяется своя ячейка памяти 3. Операции присвоения меняют значения этих ячеек, но не сами ячейки 3.
    • Ссылочные типы размещаются так: в стеке размещается ссылка на данные объекта, а в «управляемой куче» непосредственно размещаются данные (поля) объекта, на которые указывает ссылка из стека 2.
    Ещё несколько отличий:
    • Базовый тип 2. Для значимых типов базовым типом является System.ValueType, а для ссылочных типов — любой незапечатанный тип кроме System.ValueType 2.
    • Возможность быть унаследованным 2. Значимые типы всегда запечатаны, а потому не могут быть унаследованными (быть базовыми для других) 2. Ссылочные типы могут выступать базовыми для других типов, если они не являются запечатанными 2.
    • Способ передачи параметров в функцию 2. Переменные значимых типов передаются по значению, то есть функции передаётся полная копия переменной-аргумента 2. В случае со ссылочными типами при передаче ссылки в функцию, по значению копируется только сама ссылка 2.
    • Время существования переменной 2. Типы-значения прекращают своё существование, когда выходят за рамки того контекста, в котором они определялись 2. Типы ссылки уничтожаются «сборщиком мусора» 2.
    На основе 10 источников: