C# 3.0 and VB.NET 9.0 introduced implicit typing. When you use anonymous types, it's required. The rest of the time, it's mostly a judgment call to decide whether to use implicitly-typed local variables or not. An interesting discussion is going on about this on Jean-Paul S. Boodhoo's blog. See all the comments.