O inicializador de coleção vazio para a propriedade da lista resulta em nulo
Quando euexecute este código, não inicializaThisIsAList
para uma coleção vazia como eu esperava ... em vez dissoThisIsAList
foi nulo.
void Main()
{
var thing = new Thing
{
ThisIsAList = {}
};
Console.WriteLine(thing.ThisIsAList == null); // prints "True"
}
public class Thing
{
public List<string> ThisIsAList { get; set; }
}
Por que isso não é um erro de compilação? Por que o resultadonull
?
Fiquei me perguntando se talvez houvesse uma conversão implícita acontecendo aqui, mas as seguintes tentativas produziram erros de compilação:
thing.ThisIsAList = Enumerable.Empty<string>().ToArray();
List<int> integers = { 0, 1, 2, 3 };
De acordo com a documentação do MSDN sobreinicializadores de coleção, parece que um inicializador de coleção basicamente trata apenas de chamadasAdd()
para voce. Então eu procurei possíveis sobrecargas paraList.Add
, mas não encontrou nada que eu acho que se aplicaria.
Alguém pode explicar o que está acontecendo aqui a partir da especificação C #?