Назад к вопросам
Senior
4
Разница между struct и class в C#?
Компании, где спрашивали
Сбербанк
Ответ от нейросети
sobes.tech AI
В C# основное различие между struct и class заключается в том, что struct — это тип значения (value type), а class — ссылочный тип (reference type).
- Хранение:
structхранится в стеке (если локальная переменная) или inline в объекте,class— в куче, переменная содержит ссылку. - Передача: При передаче
structкопируется, при передаче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 тоже станет "Bob"