Another new feature in VS2008 and C# 3.0 that compiles down to 2.0 compatible IL is implicit typing of variables. This allows the use of the "var" keyword as the declared type. (Strictly speaking, "var" is not a true keyword. It is interpreted as a keyword when it is used in the place of a type.) This is not the same as week typing - as described in this post, the variables are still strongly typed.
All of the following constructs are perfectly legal:
1: var myString = "s";
2: var myInt = 0;
3: var myDecimal = 0.0M;
4: var myIntArray = new[] { 1, 2, 3, 4, 5 };
5: var myDouble = 0.0D;
Note the explicit declaration (via the "M") for the decimal value. The compiler assumes that 0.0 is a double, and will not type it as a decimal. Unless of course you have code like this:
1: var myDecimal = 0.0M;
2: var myDecimal2 = myDecimal + 2;
This is where implicit typing falls short, and deals a serious blow to readability. To someone else reading your code, there is much too much thought that needs to go into some of these declarations, and last I checked the Lezinski-Reddick naming convention is passe.
So why use them? They are truly a side effect of the Linq additions to the framework, and are invaluable in that context. Outside of that, the one place I would consider using them are in iterators.
1: foreach (var i in myIntArray)
2: {
3: //Do something
4: }
Certainly not a woo-hoo moment, but usable AND readable. So, think before you act, and as we said in college, temper your actions with wisdom.
Happy Coding!
d5b66207-83b6-4ae6-8e36-518bba574189|0|.0|27604f05-86ad-47ef-9e05-950bb762570c