Sobes.tech
Junior — Middle
109

Какие отличия есть между структурами и классами в языке программирования?

Companies where asked
IT OneIT One

Answer from AI

sobes.tech AI

В C# основные отличия между структурами (struct) и классами (class) заключаются в следующем:

  • Тип значения vs. тип ссылки: структуры — это типы значения, а классы — типы ссылок. Это значит, что при присваивании структуры создаётся копия, а при присваивании класса копируется ссылка на объект.

  • Хранение в памяти: структуры обычно хранятся в стеке (если они локальные переменные), а объекты классов — в куче.

  • Наследование: структуры не поддерживают наследование от других структур или классов (кроме реализации интерфейсов), тогда как классы поддерживают полное наследование.

  • Конструкторы: структуры не могут иметь безпараметрический конструктор, он создаётся по умолчанию, а классы могут иметь любые конструкторы.

  • Использование: структуры обычно используются для небольших, легковесных объектов, которые представляют данные без сложной логики.

Пример:

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"