Подтвердить что ты не робот

Перегрузка метода и нулевое значение

Возможный дубликат:
С#: передача нулевого значения в перегруженный метод - какой метод вызывается?

Рассмотрим эти 2 метода:

void Method(object obj)  { Console.WriteLine("object"); }
void Method(int[] array) { Console.WriteLine("int[]"); }

Когда я пытаюсь позвонить:

Method(null);

в Visual Studio 2008 с пакетом обновления 1 (SP1) Я получаю int[].

Почему это?

4b9b3361

Ответ 1

Это продукт разрешения перегрузки. Ваш аргумент null можно преобразовать как в object, так и в int[]. Поэтому компилятор выбирает наиболее определенную версию, потому что int[] более определен, чем object.

Ответ 2

Поскольку int [] более специфичен, чем объект, метод с параметром object будет игнорироваться. Если вы вызовете метод ( "Некоторая строка" ), будет вызван метод с параметром object.