<p>When C# 4.0 comes out and we have the dynamic keyword as described in this <a href="http://channel9.msdn.com/pdc2008/TL16/" rel="noreferrer">excellent presentation by Anders Hejlsberg</a>, (C# is evolving faster than I can keep up.. I didn't have much time to acquaint myself with the var keyword)</p>

<p>Would I still need the var keyword ? Is there anything that var can do.. that dynamic can't?</p>

<pre><code>var x = SomeFunctionThatIKnowReturnsSomeKindOfList();
// do something with x

dynamic x = SomeFunctionThatIKnowReturnsSomeKindOfList();
// do something with x
</code></pre>

No, they're very different.
```
var
```
means "infer the type of the variable at compile-time" - but it's still entirely statically bound.
```
dynamic
```
means "assume I can do anything I want with this variable" - i.e. the compiler doesn't know what operations are available, and the DLR will work out what the calls
really
mean at execution time.
I expect to use
```
dynamic
```
very rarely - only when I truly want dynamic behaviour:
```
var
```
lets you catch typos etc at compile-time
statically bound code is always going to run faster than dynamically bound code (even if the difference becomes reasonably small)
statically bound code gives more compile-time support beyond just errors: you can find call hierarchies, refactoring will work better, Intellisense is available etc