Прямо до точки:
int? i = null;
i.ToString(); //happy
i.GetType(); //not happy
Я получаю очень близкий вопрос, который на самом деле говорит о том, почему i.ToString()
работает нормально.
Изменить: Только что выяснилось, что этот угловой случай был самым проголосовавшим в этом потоке SO!