Sobes.tech
Назад к вопросам
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"