Когда вы используете тип параметра dynamic
, т.е.
static void update(dynamic name)
{
}
, компилятор изменяет подпись вашего метода, чтобы использовать вместо него object
, т.е.
static void update(object name)
{
}
, а затем вставляет некоторые "magi c" в теле вашего метода, чтобы обрабатывать name
как объект с динамической типизацией. Однако это вводит важное ограничение: у вас не может быть другого метода update
, который принимает object
, потому что он у вас уже есть.
Подумайте об этой перегрузке с точки зрения разработчика языка: когда вы видите вызов перегрузки между object
и dynamic
, не было бы интуитивно понятного способа разрешения t ie, потому что и object
, и dynamic
могли бы вместить объекты любого типа. Следовательно, подобные перегрузки в любом случае следует запретить, независимо от базовой реализации для dynamic
.