C# 3.0 Features Basics For LINQ – PART 1

The 'var' Keyword

Mostly used when you need a variable for anonymous types which can only be resolved at compile time e.g. LINQ queries

Auto Implemented properties

This feature eases the creation of properties for a field inside the C# class e.g.

1: //C# 3.0 Code

2: class Contact

3: {

4: publicstring Phone { get; set; }

5: publicstring Name { get; set; }

6: }

In the above code, we create two properties.The compiler automatically creates a private variable here accessed only via getters and setters. In C# 2.0 we would write a considerably big code for achieving this :

1: //C# 2.0 Code

2: Class Contact {

3: privatestring _name;

4: public String Name {

5: get {

6: If(_name != null ) {

7: return _name;

8: }

9: set {

10: _name = value;

11: }

12: }

Making Sense Of Object Initializers

In C# 3.0 you can use object initializers to assign values to accessible fields/properties at the time of object creation e.g.

This is useful when we want to use the anonymous types , since the only way to initialize them are using object initializers . It also helps in selecting a portion of the data that is needed from all the available data in an class e.g.

1: class Contact {

2: publicstring FirstName { get; set; }

3: publicstring LastName { get;set;}

4: publicstring Email {get;set;}

5: publicstring Phone {get;set;}

6: }

7: var contact = from c in Contacts

8: select new { c.FirstName, c.LastName, c.Email } ;

Collection Initializers

As is the case with object initializers, you can also have the Collections initialized in a short way, like

1: //C# 3.0;Collections Initializer

2: List <Contact> contacts = new List <Contact> {

3: {'Bindesh', 'Vijayan'},

4: {'Madhuban', 'Singh'},

5: {'Sukesh', 'A K'}

6: };

The same would have taken a considerable work in C# 2.0, e.g.

1: List<Contact> contacts = new List<Contact>();

2: //call Add each time for adding values

3: contacts.Add( new Contact('Bindesh', 'Vijayan'));

The collection initializer can work for all the types that meets the following criteria :