Проблемы в создании CRNA

Это связано с тем, что почти любая операция , включающая динамическое значение, динамически решается во время выполнения. Исключений не существует для случаев, когда на момент компиляции присутствует только один метод; язык проще. (Для некоторых вызовов компилятор делает выполнение достаточного разрешения во время компиляции, чтобы гарантировать, что существует хотя бы один метод с подходящим количеством параметров - это указано в спецификации C # 5 в разделе 7.5. 4, но это не влияет на эффективный тип возврата.)

Из спецификации C # 5, раздел 7.6.5:

Вызов invocation-expression динамически связан, если выполняется хотя бы одно из следующих условий:

  • Первичное выражение имеет тип времени компиляции dynamic.
  • По крайней мере, один аргумент необязательного аргумента-списка имеет тип времени компиляции dynamic, а первичное выражение не имеет типа делегата.

В этом случае компилятор классифицирует invocation-expression как значение типа dynamic. [...]

Есть несколько операций с динамическими значениями, которые по-прежнему имеют нединамический общий тип. Например:

  • d is Foo всегда bool
  • d as Foo всегда Foo
  • new Foo(d) всегда Foo ], хотя точный конструктор для использования определяется во время выполнения

Но любой вызов метода обрабатывается как возвращаемый тип dynamic.

0
задан kostix 17 February 2019 в 17:19
поделиться