Questo codice compila in C#

IDisposable foo = null;
string s = foo.ToString();

Mentre questo non compila in VB.NET

Dim foo As IDisposable
Dim s As String = foo.ToString()

A parte la domanda ovvia (perchè?) quale dei due linguaggi si comporta in maniera più "pulita"?