Sobes.tech
Junior
156
questionbank

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

Answer from AI

sobes.tech AI

Значимые типы (например, int, struct) хранят данные напрямую в месте их объявления. Передача или присвоение значимого типа создает копию его значения.

Ссылочные типы (например, class, string, массивы) хранят ссылку на место в памяти, где находятся сами данные. Передача или присвоение ссылочного типа копирует ссылку, а не сами данные. Два разных ссылочных типа могут указывать на одни и те же данные в памяти.

Характеристика Значимые типы Ссылочные типы
Хранение данных Напрямую в переменной В куче (Heap), переменная хранит ссылку
Присвоение/Передача Копирование значения Копирование ссылки
Память Стек (Stack) Куча (Heap) и Стек (Stack) для ссылки
Пример int, struct, bool, enum class, string, массивы, delegate

Пример:

// Значимый тип: x и y - разные экземпляры
int x = 10;
int y = x; // Копирование значения x
y = 20;    // Изменение y не влияет на x

// Ссылочный тип: obj1 и obj2 указывают на один объект
MyClass obj1 = new MyClass();
obj1.Value = 10;
MyClass obj2 = obj1; // Копирование ссылки
obj2.Value = 20;    // Изменение Value через obj2 влияет на obj1