Поскольку универсальные словари могут содержать экземпляры типа значения, а значение null недопустимо для типа значения. Например:
var dict = new Dictionary<string, DateTime>();
DateTime date = dict["foo"]; // What should happen here? date cannot be null!
Вместо этого следует использовать метод словаря TryGetValue:
var dict = new Dictionary<string, DateTime>();
DateTime date;
if (dict.TryGetValue("foo", out date)) {
// Key was present; date is set to the value in the dictionary.
} else {
// Key was not present; date is set to its default value.
}
Кроме того, словарь, в котором хранятся ссылочные типы, будет по-прежнему хранить нулевые значения. И ваш код может считать, что «значение равно нулю» отличается от «ключ не существует».