Рассмотрим следующие функции:
static void Take(object o)
{
Console.WriteLine("Received an object");
}
static void Take(int i)
{
Console.WriteLine("Received an integer");
}
Когда я вызываю функцию Take следующим образом:
var a = (object)2;
Take(a);
Я получаю: Received an object
Но если назовите его так:
dynamic b = (object) 2;
Take(b);
Я получаю: Received an integer
Оба параметра (a и b) добавляются к object. Но почему компилятор имеет такое поведение?