Правильный ответ: 10
Многие ожидают увидеть 20, но здесь есть важная деталь:
Counter — это struct, а значит значимый тип (value type).
Когда выполняется:
var c2 = c1;
создаётся не ссылка на объект, а полная копия структуры.
После этой строки в памяти фактически находятся два независимых экземпляра:
c1 -> Value = 10 c2 -> Value = 10
Затем меняется только копия:
c2.Value = 20;
Теперь состояние выглядит так:
c1 -> Value = 10 c2 -> Value = 20
Поэтому вывод будет: 10
💡 Это одно из ключевых отличий struct от class.
Для сравнения, если бы Counter был классом:
public class Counter
{
public int Value;
}
то после:
var c2 = c1;
обе переменные ссылались бы на один и тот же объект, и результатом был бы уже 20.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#dotnet_challenge