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" }
}
};
}
}
Le programme ci-dessus se compile correctement, mais se bloque au moment de l'exécution avec La référence d'objet ne correspond pas à une instance de l'objet .
Si vous remarquez dans l'extrait ci-dessus, j'ai omis nouveau lors de l'initialisation des propriétés de l'enfant.
Il est évident que la manière correcte de procéder à l'initialisation est la suivante :
var parent = new Parent() {
Child = new Child() {
Strings = new List<string> { "hello", "world" }
}
};
Ma question est la suivante : pourquoi le compilateur C# ne se plaint-il pas lorsqu'il voit la première construction ?
Pourquoi la syntaxe de l'initialisation interrompue est-elle valide ?
var parent = new Parent() {
Child = {
Strings = { "hello", "world" }
}
};