using System;
using System.Collections.Generic;
class Parent
{
public Child Child { get; set; }
}
class Child
{
public List<string> Strings { get; set; }
}
static class Program
{
static void Main() {
// bad object initialization
var parent = new Parent() {
Child = {
Strings = { "hello", "world" }
}
};
}
}
Вышеупомянутая программа компилируется отлично, но сбой при выполнении с ссылкой на объект не установлен в экземпляр объекта.
Если вы заметили в приведенном выше фрагменте, у меня есть пропущенный новый при инициализации дочерних свойств.
Очевидно, что правильный способ инициализации:
var parent = new Parent() {
Child = new Child() {
Strings = new List<string> { "hello", "world" }
}
};
Мой вопрос в том, почему компилятор С# не жалуется, когда видит первую конструкцию?
Почему синтаксис с инициализацией сломанной инициализации?
var parent = new Parent() {
Child = {
Strings = { "hello", "world" }
}
};