Ответ 1
Это продукт разрешения перегрузки. Ваш аргумент null
можно преобразовать как в object
, так и в int[]
. Поэтому компилятор выбирает наиболее определенную версию, потому что int[]
более определен, чем object
.
Возможный дубликат:
С#: передача нулевого значения в перегруженный метод - какой метод вызывается?
Рассмотрим эти 2 метода:
void Method(object obj) { Console.WriteLine("object"); }
void Method(int[] array) { Console.WriteLine("int[]"); }
Когда я пытаюсь позвонить:
Method(null);
в Visual Studio 2008 с пакетом обновления 1 (SP1) Я получаю int[]
.
Почему это?
Это продукт разрешения перегрузки. Ваш аргумент null
можно преобразовать как в object
, так и в int[]
. Поэтому компилятор выбирает наиболее определенную версию, потому что int[]
более определен, чем object
.
Поскольку int [] более специфичен, чем объект, метод с параметром object будет игнорироваться. Если вы вызовете метод ( "Некоторая строка" ), будет вызван метод с параметром object.