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