Эта проблема снова застала меня врасплох. Не мог бы кто-нибудь дать техническое объяснение, почему следующий код не выдает никаких предупреждений или ошибок. Вопрос, который вы должны задать себе, - это (конечно же) чувствуете ли вы себя счастливчиком?
class Program
{
static string Feeling(object o) { return "Lucky"; }
static string Feeling(string s) { return "Unlucky"; }
static void Main(string[] args)
{
Console.WriteLine("I feel " + Feeling(null));
}
}
Бонусные очки начисляются, если вы знаете, какой метод будет вызван без выполнения кода. И, чтобы добавить оскорблений, это происходит не только с нулевыми параметрами:
class Program
{
static string Feeling(int i) { return "Lucky"; }
static string Feeling(uint i) { return "Unlucky"; }
static void Main(string[] args)
{
Console.WriteLine("I feel " + Feeling(7));
}
}