Почему компилятор не преобразует var [] в object [] в C #?

Между этими двумя строками нет никакой разницы, потому что компилятор во второй строке понимает, что это массив типа int .

var x = new int[] { 1, 2, 3 };   //Fine, x is int[]
var x = new [] { 1, 2, 3 };      //Fine, x is int[]

Но почему я не могу сделать это с разными типами? Почему компилятор не преобразует мою переменную в объект типа ?

var x = new object[] { 1, "df", 5 };   //Fine, x is object[]
var x = new [] { 1, "df", 5 };         //Error! "No best type found for implicity-typed-array"

РЕДАКТИРОВАТЬ:

Спасибо за все ваши ответы. Но мне все еще интересно, каковы плюсы и минусы создания всех выражений, которые компилятор не может преобразовать в тип объект ? (Потому что я использую нотацию var , что означает, что это не может быть какой-либо тип. Я так понимаю.) Почему компилятор не находит ближайший тип элементов массива, поднимаясь по дереву наследования?

32
задан Daniel Daranas 26 August 2013 в 12:15
поделиться