This compiles
var fourGb = (long)4*1024*1024*1024;
But this fails
var fourGb = 4*1024*1024*1024;
With "The operation overflows at compile time in checked mode".
So if the compiler knows this will be an overflow why cant it infer that the variable type should be a long?