Встречается на 16% собеседований по C#

В чём разница между классом и структурой

Классы (class) и структуры (struct) в C# различаются по семантике, поведению и использованию:

  1. Тип данных:

    • Классы — ссылочные типы (хранятся в куче).
    • Структуры — значимые типы (хранятся в стеке или внутри других объектов).
  2. Наследование:

    • Классы поддерживают наследование.
    • Структуры не могут наследоваться (но реализуют интерфейсы).
  1. Nullability:

    • Классы могут быть null.
    • Структуры не могут быть null (кроме Nullable<T>).
  2. Размер и производительность:

    • Структуры эффективны для небольших данных (менее 16 байт).
    • Классы лучше для больших или изменяемых данных.
  3. Дефолтные значения:

    • Классы инициализируются как null.
    • Структуры имеют значение по умолчанию (все поля — default).

Пример:

csharp
struct Point { public int X, Y; }  // Значимый тип
class Person { public string Name; } // Ссылочный тип

Point p1 = new Point(); // X=0, Y=0 (не null)
Person p2 = new Person(); // Name=null

Когда использовать:

  • struct: Небольшие, неизменяемые данные (координаты, цвет).
  • class: Сложные объекты с логикой и наследованием.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы