Sobes.tech
Back to questions
Junior — Middle
73

Какие отличия существуют между классом и структурой в программировании?

Companies where asked
Бренд Монитор
appfox

Answer from AI

sobes.tech AI

Основные отличия между классом и структурой в C#:

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

Пример:

struct Point {
    public int X, 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 = "Иван" };
Person person2 = person1; // ссылка
person2.Name = "Пётр";
// person1.Name тоже изменится на "Пётр"

Выбор между классом и структурой зависит от задачи и требований к производительности и семантике.