The "var" keyword in C# 3.0 has nothing to do with dynamic type-checking whatsoever. It's just basic static type-inference that the compiler was doing already (just only exposing through error messages).
I hate how the noob brigades are swapping the meanings of dynamic type-checking and static type-inference at every availably opportunity.
I hate how the noob brigades are swapping the meanings of dynamic type-checking and static type-inference at every availably opportunity.