Sobes.tech
Middle
122
questionbank

В чем разница между var и dynamic в C#?

Answer from AI

sobes.tech AI

var используется для неявной типизации локальных переменных. Компилятор определяет тип на этапе компиляции.

dynamic используется для работы с объектами, тип которых известен только во время выполнения. Проверка типа и вызов методов происходит во время выполнения.

Характеристика var dynamic
Типизация Статическая (компиляция) Динамическая (выполнение)
Проверка типа Во время компиляции Во время выполнения
Производительность Высокая (определен тип) Ниже (требуется анализ во время выполнения)
Ограничения Только для локальных переменных Для переменных, полей, свойств, параметров
Применение Удобство, сокращение кода Взаимодействие с COM, DLR, Reflection

Пример с var:

// Компилятор определяет, что x имеет тип int
var x = 10;
// Ошибка компиляции, т.к. x определен как int
// x = "hello";

Пример с dynamic:

// Тип y определяется во время выполнения
dynamic y = 10;
// Нет ошибки компиляции, т.к. проверка происходит во время выполнения
y = "hello";
// Вызов метода, который может не существовать; ошибка может произойти во время выполнения
// y.SomeMethod();