Рассмотрим следующие функции:
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
. Но почему компилятор имеет такое поведение?