Я думаю, вы хотите знать, почему
string[] s={"all","in","all"};
работает, когда вы ожидаете, что потребуется сначала инициализировать массив следующим образом:
string[] s = new string[];
или
string[] s = new string[] {"all","in","all"};
Ответ - просто магия компилятора. По инициализации компилятор знает, насколько велик размер массива, поэтому он просто делает это за кулисами. Как и в случае ключевого слова var
, смысл состоит в том, чтобы ограничить объем избыточной информации, которую требуется ввести.