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