Назад к вопросам
OZON
Middle
5
Расскажи разницу между ссылочными и значимыми типами.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В C# типы делятся на значимые (value types) и ссылочные (reference types).
-
Значимые типы хранят данные непосредственно. При присваивании или передаче в метод копируется значение. Примеры:
int,double,struct,enum. -
Ссылочные типы хранят ссылку на объект в памяти (heap). При присваивании копируется ссылка, а не сам объект. Примеры:
class,string,array.
Основные отличия:
- Хранение: Значимые типы обычно хранятся в стеке, ссылочные — в куче.
- Передача: Значимые типы передаются по значению (копия), ссылочные — по ссылке (копируется ссылка).
- Изменяемость: Изменения в копии значимого типа не влияют на оригинал; изменения через ссылку в ссылочном типе отражаются на всех ссылках.
Пример:
int a = 5;
int b = a; // копия значения
b = 10;
// a всё ещё 5
class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // копия ссылки
p2.Name = "Bob";
// p1.Name теперь "Bob"
Понимание разницы важно для управления памятью и поведением программы.