Между этими двумя строками нет никакой разницы, потому что компилятор во второй строке понимает, что это массив типа 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
, что означает, что это не может быть какой-либо тип. Я так понимаю.) Почему компилятор не находит ближайший тип элементов массива, поднимаясь по дереву наследования?