Now let's talk technology. Microsoft have another a new set of features to C# in its third avatar. There is complete list available at MSDN, but I just wanted to add my comments to it as I study new features one by one. What I am planning is, I'll study one new feature everyday, post it here with my comments.
- Implicitly Typed Local Variables
- Type is inferred by the expression used to initialize the variable
- Only applicable to local variable
- Variable declared using keyword 'var'
- There should be no Type with name 'var' defined in scope. Only then type inferring will work
- We should initialize the variable where we declaring it
- Initialized must be an expression.
- Local variable declaration should not include multiple variables
- Initializer should not refer to variable itself
- Some Examples: [ <=> is Same as ]
var i = 5; <=> int i = 5;
var s = "Hello"; <=> string s = "Hello";
var d = 1.0; <=> double d = 1.0;
var numbers = new int[] {1, 2, 3}; <=> int[] number = new int[]{1,2,3}; - Some incorrect use of var:
var x; // Error, no initializer to infer type from
var y = {1, 2, 3}; // Error, collection initializer not permitted
var z = null; // Error, null type not permitted
var u = x => x + 1; // Error, lambda expressions do not have a type
var v = v++; // Error, initializer cannot refer to variable itself - for, foreach and using (resource acquisition) can also use var. Like,
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (var n in numbers) { //Do some thing } - COMMENTS
Why do we need to use var? Everything should be Type Strict. I think this will impact performance as compiler will use some kind of intelligence to find out variable type and it will surely take up some time. This is no scripting language...man this is C#. It will just complicate things even more and add to huge list of keywords that we already have like sealed, virtual, override, abstract, new, internal etc. I don't see any use of this so called added feature. Please let me know your opinions.
~eNjOy cOdinG~
199 comments:
Post a Comment