Value Type (тип значения) – это тип данных, который хранит своё значение непосредственно в памяти (обычно в стеке), а не ссылку на объект в куче (heap), как это делает ссылочный тип (Reference Type).
🚩Какие типы данных являются Value Type?
Простые типы (
int, double, bool, char, byte, float, decimal, etc.) Структуры (
struct) Перечисления (
enum) Nullable-значения (
int?, double?) 🚩Пример Value Type
int a = 10;
int b = a; // Значение копируется
b = 20;
Console.WriteLine(a); // 10 (остался неизменным)
Console.WriteLine(b); // 20
🚩Где хранятся Value Type?
Value Type обычно хранятся в стеке (stack) – это быстрая область памяти.
Если структура (
struct) является частью объекта (который хранится в куче), то её значение хранится внутри объекта в куче. struct Point
{
public int X;
public int Y;
}
class Program
{
static void Main()
{
Point p1 = new Point { X = 5, Y = 10 };
Point p2 = p1; // Копирование структуры (создаётся новый экземпляр)
p2.X = 20;
Console.WriteLine(p1.X); // 5 (остался неизменным)
Console.WriteLine(p2.X); // 20
}
}
🚩Когда использовать Value Type?
Если данные небольшие и часто изменяются –
struct Если объект недолговечный и не требует сложного поведения
Если производительность важна – Value Type быстрее из-за работы в стеке
Ставь 👍 и забирай 📚 Базу знаний