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 для небольших, неизменяемых данных, где важна производительность и отсутствие накладных расходов на сборку мусора.