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: public string Phone { get; set; }
5: public string 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: private string _name;
4: public String Name {
5: get {
6: If(_name != null ) {
7: return _name;
8: }
9: set {
10: _name = value;
11: }
12: }
In C# 3.0 you can use object initializers to assign values to accessible fields/properties at the time of object creation e.g.
1: // C# 3.0;Object initializer for our Contact class
2: Contact myContact = new Contact { Phone = '1212', Name = 'Bindesh' };
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: public string FirstName { get; set; }
3: public string LastName { get;set;}
4: public string Email {get;set;}
5: public string Phone {get;set;}
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 : Implements IEnumerable interface Has a public Add() method
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: };
1: List<Contact> contacts = new List<Contact>();
2: //call Add each time for adding values
3: contacts.Add( new Contact('Bindesh', 'Vijayan'));
PingBack from http://msdnrss.thecoderblogs.com/2008/03/22/c-30-features-basics-for-linq-part-1-2/