динамичный по сравнению с var в C# [дубликат]

52
задан Cœur 21 July 2018 в 07:44
поделиться

3 ответа

var означает вывод типа static - в вашем случае он в точности эквивалентен

A a1 = new A();

Вся привязка все еще выполняется полностью статически. Если вы посмотрите на сгенерированный код, он будет точно таким же, как и в предыдущем объявлении.

dynamic означает, что все любые выражения, использующие a2 , связаны во время выполнения, а не во время компиляции. время, поэтому он может вести себя динамически. Компилятор не проверяет, существует ли метод Foo - его поведение определяется во время выполнения. Действительно, если объект реализует IDynamicMetaObjectProvider , он может решить, что делать с вызовом во время выполнения, отвечая на любой вызов метода (или другой вид использования) - другими словами, там не обязательно быть "

93
ответ дан 7 November 2019 в 09:08
поделиться

var безопасен по типу, так как использует вывод типа. Запись var a = new A (); является сокращением для A a = new A (); . Переменная, объявленная динамической , НЕ является типобезопасной, и компилятор ничего не делает для проверки того, существуют ли методы, которые вы вызываете для нее.

25
ответ дан 7 November 2019 в 09:08
поделиться

В случае var A () должен иметь метод .Foo (int) во время компиляции.

динамический случай, нет.

14
ответ дан 7 November 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: