Встречается на 5% собеседований по Data Engineer

В чем разница между ссылочными и значимыми типами данных в C#

Ссылочные типы хранят ссылку на данные в куче, а значимые — сами данные в стеке.

Ключевые отличия:

  • Ссылочные (class, string, массивы):
    • Присваивание копирует ссылку, оба объекта указывают на одни данные.
    • Могут быть null.
  • Значимые (struct, int, bool, enum):
    • Присваивание копирует значение.
    • Не могут быть null (кроме Nullable<T>).

Пример:

csharp
// Значимый тип (struct)
Point p1 = new Point(10, 20);
Point p2 = p1;  // Копирование значения
p2.X = 30;      // p1.X останется 10

// Ссылочный тип (class)
class PointClass { public int X; public int Y; }
PointClass pc1 = new PointClass { X = 10, Y = 20 };
PointClass pc2 = pc1;  // Копирование ссылки
pc2.X = 30;            // pc1.X тоже изменится
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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