Думайте об этом следующим образом:
Переменная — это пустая бумага. Вы можете или не можете написать на нем адрес, который приведет вас в какое-то место.
Первая строка пишет на бумаге адрес объекта (созданного после нового ключевого слова).
Во второй строке у вас просто есть пустая статья, которая, как ожидается (компилятором), в какой-то момент будет содержать ссылку на словарь, но в настоящее время это просто пустая статья. Поэтому, если вы попытаетесь использовать его для перехода к адресу словаря, вы не сможете это сделать (он же NullReferenceException). Нет информации о том, где находится объект (фактически адреса нет).
В коде:
Dictionary<int, List<string>> myDictionary = new Dictionary<int, List<string>>();
myDictionary.Add(1, "1"); // OK, myDictionary points to an address of
// Dictionary object and I can access it.
Пока:
Dictionary<int, List<string>> myDictionary = null;
myDictionary.Add(1, "1"); // Fails at run-time, I have no address for a Dictionary object
// here AKA : NullReferenceException
Неверные утверждения вы сказали:
Вы не объявляете класс null, как вы сказали, вы создаете переменную, указывающую на null.
Вторая строка не является пустым объектом словаря, как вы сказали. Это переменная типа Dictionary, указывающая на NULL. В памяти нет пустого объекта словаря.
person
Zein Makki
schedule
11.07.2016
.Count
на обоих — скоро вы увидите разницу! - person CompuChip   schedule 11.07.2016