El inicializador de colección vacío para la propiedad de lista da como resultado nulo
Cuando yoejecuta este código, no se inicializaThisIsAList
a una colección vacía como esperaba ... en su lugarThisIsAList
fue 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 qué no se trata de un error de compilación? ¿Por qué es el resultado?null
?
Me preguntaba si tal vez había una conversión implícita sucediendo aquí, pero los siguientes intentos produjeron errores de compilación:
thing.ThisIsAList = Enumerable.Empty<string>().ToArray();
List<int> integers = { 0, 1, 2, 3 };
De acuerdo con la documentación de MSDN sobreinicializadores de colección, parece que un inicializador de colección básicamente solo maneja llamadasAdd()
para ti. Así que busqué posibles sobrecargas paraList.Add
, pero no encontré nada que creo que se aplicaría.
¿Alguien puede explicar lo que está pasando aquí desde la especificación de C #?