Почему второй из них создает исключение, а первый нет?
string s = null;
MessageBox.Show(s);
MessageBox.Show(s.ToString());
Обновлено - исключение, которое я могу понять, загадочный бит (для меня) - вот почему первая часть не показывает исключение. Это не имеет ничего общего с окном сообщений, как показано ниже.
Например:
string s = null, msg;
msg = "Message is " + s; //no error
msg = "Message is " + s.ToString(); //error
Первая часть, по-видимому, неявно преобразует ноль в пустую строку.