Sobes.tech
Back to questions
Middle+
2

Что такое struct, чем отличается от class?

Companies where asked
Gravilink

Answer from AI

sobes.tech AI

В C# struct — это тип значения (value type), а class — ссылочный тип (reference type). Основные отличия:

  • Хранение: struct хранится в стеке (если локальная переменная) или inline в объекте, class — в куче, переменная содержит ссылку.
  • Передача: при передаче struct копируется, при передаче class копируется ссылка.
  • Наследование: struct не поддерживает наследование (кроме реализации интерфейсов), class поддерживает.
  • Конструкторы: у struct есть ограничение — нет конструктора без параметров, инициализируется по умолчанию.

Пример:

struct Point {
    public int X;
    public int Y;
}

class Person {
    public string Name;
}

Point p1 = new Point { X = 1, Y = 2 };
Point p2 = p1; // копия
p2.X = 3; // p1.X останется 1

Person person1 = new Person { Name = "Alice" };
Person person2 = person1; // ссылка
person2.Name = "Bob"; // person1.Name тоже изменится

Используют struct для небольших, неизменяемых данных, где важна производительность и отсутствие накладных расходов на сборку мусора.