Пустой инициализатор коллекции для свойства списка приводит к нулю
Когда язапустить этот кодне инициализируетсяThisIsAList
в пустую коллекцию, как я ожидал ... вместоThisIsAList
был нулевым
void Main()
{
var thing = new Thing
{
ThisIsAList = {}
};
Console.WriteLine(thing.ThisIsAList == null); // prints "True"
}
public class Thing
{
public List<string> ThisIsAList { get; set; }
}
Почему это не ошибка компиляции? Почему результатnull
?
Мне было интересно, возможно, здесь происходило неявное преобразование, но следующие попытки привели к ошибкам компиляции:
thing.ThisIsAList = Enumerable.Empty<string>().ToArray();
List<int> integers = { 0, 1, 2, 3 };
Согласно документации MSDN наинициализаторы коллекцииПохоже, инициализатор коллекции в основном просто обрабатывает вызовAdd()
для тебя. Поэтому я искал возможные перегрузки дляList.Add
, но не нашел ничего, что, я думаю, применимо.
Может кто-нибудь объяснить, что здесь происходит из спецификации C #?