Инициализация свойства списка без «нового списка» вызывает исключение NullReferenceException
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" }
}
};
Мой вопрос: почему компилятор C # не жалуется, когда видит первую конструкцию?
Почему неправильный синтаксис допустимой инициализации?
var parent = new Parent() {
Child = {
Strings = { "hello", "world" }
}
};