Take the following snippet:
List distances = new List();
Was the redundancy intended by the language designers? If so, wh
The redunancy wasn't intended, per se, but was a side-effect of the fact that all variables and fields needed to have a type declaration. When you take into account that all object instantiations also mention the type's name in a new expression, you get redundant looking statements.
Now with type-inferencing using the var keyword, that redundancy can be eliminated. The compiler is smart enough to figure it out. The next C++ also has an auto keyword that does the same thing.
The main reason they introduced var, though, was for anonymous types, which have no name:
var x = new {Foo = Bar, Number = 1};