Как вы знаете, не разрешается использовать синтаксис инициализации Array со списками. Это даст ошибку времени компиляции. Пример:
List<int> test = { 1, 2, 3}
// At compilation the following error is shown:
// Can only use array initializer expressions to assign to array types.
Однако сегодня я сделал следующее (очень упрощенное):
class Test
{
public List<int> Field;
}
List<Test> list = new List<Test>
{
new Test { Field = { 1, 2, 3 } }
};
Приведенный выше код компилируется просто отлично, но при запуске он даст сообщение об ошибке "Объект ссылается не на объект".
Я бы ожидал, что код даст ошибку времени компиляции. Мой вопрос к вам: почему это не так, и есть ли веские причины, когда такой сценарий будет работать правильно?
Это было протестировано с использованием .NET 3.5, как компиляторов .Net, так и Mono.
Приветствия.