Вопрос несколько сбивает с толку, так как этот вопрос не имеет ничего общего с LINQ, не имеет ничего общего с общей дисперсией и включает инициализатор коллекции, а также инициализатор объекта. На самом деле, насколько я могу судить, " почему нельзя использовать инициализатор коллекции вне выражения создания объекта? "
Соответствующий здесь принцип проектирования заключается в том, что в общем случае мы хотим, чтобы операции, которые создают и инициализируют объекты, имели где-то слово «новый» в качестве сигнала читателю, что здесь происходит создание объекта. (Да, в C # есть несколько исключений из этого правила. В качестве упражнения для читателя посмотрите, можете ли вы назвать их все.)
Делая вещи по-своему, становится сложнее рассуждать о коде. Быстро, что это делает?
d = new List<int>() { 10, 20, 30 };
d = { 40, 50, 60 };
Добавляет ли вторая строка 40, 50, 60 к существующему списку? Или он заменяет старый список новым? Там нет «нового», поэтому читатель ожидает, что новый объект был создан?
Когда вы говорите
q = new Whatever() { MyList = { 40, 50, 60 } };
, который не создает новый список; он добавляет 40, 50, 60 к существующему списку, выделенному конструктором. Поэтому предлагаемый вами синтаксис неоднозначен и сбивает с толку вопрос о том, создан новый список или нет.
Предложенная функция является запутанной и ненужной, поэтому вряд ли она будет реализована в ближайшее время.