dictionary[key] = null;
Что произойдёт если ключа "key" нет в Dictionary?
Мой коллега долго искал баг в программе, потому что был уверен, что если в словаре нет ключа "key", то программа вернёт ошибку. Из-за этого он не обращал на этот вызов внимания.
А вот что происходит на самом деле:
Dictionary проверяет наличие ключа и если не находит, то _создаёт_ его! И присваивает указанное значение. В нашем случае получается пара "key; null"
Мораль сей басни такова: внимательнее обращайтесь со свойствами, реализация которых скрыта! И с Dictionary в частности. =)