- Linq expressions don't return a predefined type, so you need a 'generic' variable declaration keyword to capture that and other places where anonymous types are used.
- Used carefully, it can make refactoring easier by decoupling a method's return type from the variable that captures it.
- Having to put the same name on the same line twice for the same statement is really kind of silly. It's a pain to type something like this:
.
ReallyLongTypeName MyVariable = new ReallyLongTypeName();