Есть код:
| Код | class Program { static void method(Object o) { Console.WriteLine("Object"); }
static void method(double[] arr) { Console.WriteLine("double[] arr"); }
static void method(int i) { Console.WriteLine("int i"); }
static void Main(string[] args) { method(null); } }
|
Который выводит "double[] arr". Я понимаю, почему он не вывел "int i" - стандартному int присвоить null нельзя, но почему не "Object" или не выдал ошибку при компиляции, ссылаясь на неоднозначность вызова?
P.S. Пришла в голову мысль, что при выборе метода для выполнения компилятор идёт снизу вверх по иерархии классов, поэтому, найдя double[] в качестве аргумента, он его и вызывает. Я прав или нет? |