In this article we will discuss some of the very useful features introduced in C# 3.0
What is Object Initializers?
Object Initializers let us create an object of a class and assign values to any accessible fields or properties of it at the same time; it's not necessary to explicitly invoke a constructor.
Let's see an Example; see:
public class Car
{
public string Name
{
get;
set;
}
public Color Color
{
get;
set;
}
}
In C# 2.0 we could have done that like this:
public static void Main()
{
Car myCar = new Car();
myCar.Name = "Chevrolet Corvette";
myCar.Color = Color.Red;
}
But from 3.0 there is one more way to do the same thing:
public static void Main()
{
Car myCar = new Car()
{
Name = "Chevrolet Corvette",
Color = Color.Red
};
}
What is Collection Initializers?
Just like Object Intializers, Collection Inializers let us create an instance of a collection and at the same time we can provide values with it.
Example:
List<int> MyInts=new List<int>(){1,2,3,5,6,7};
We can use object intializers here if we want to initialize a collection of objects; see:
List<Customer> MyCustomers =new List<Customer>()
{
new Customer(){CustomerName="Mr.A",Address="Mumbai"},
new Customer(){CustomerName="Mr.B",Address="Pune"},
new Customer(){CustomerName="Mr.C",Address="Banglore"}
};
Both Object Intializers and Collection Initializers are easy to use, simple and compact.
Anonymous Types
Anonymous types are types which behave just like normal class,
the only difference is:
- They are not predefined. Unlike normal C# classes where we create first and then create again and again, Here we will directly create a object
- They don't have a particular name.
Let's see and an example of how it looks.
To create an Anonymous type we need Object Initializers, as in:
var ExampleObject=new{Name="Sukesh Marla",Designation="Software Developer"};
Console.WriteLine(ExampleObject. Name);
Anonymous Types with LINQ
Assume we have a list of customers with 100 different properties (like Name, Point, Address…..) and we are interested only in their Name and points.
One thing we can do here is fire a LINQ query and extract the necessary data.
Normally in LINQ when we want only part of the information from each object in a sequence we use a Select clause and store temporary results into Anonymous types.
Example:
Var CustomerObject=Customers.Select(x=>
new {CustomerName=x.CustName,Points=x.Point});
So that's it. I hope everyone begins using this features if they haven't already.
Hope you enjoyed. I hope to see some good comments.

Sukesh MarlaPosted Sep 10, 2012, 3:02 PM
Putting everything in single article make it lengthy which just takes away readers interest, and this article is all about Intailzer concept in 3.0, Will try in next one.
Sai SherlekarPosted Sep 9, 2012, 12:25 AM
Mr. Sukesh this article is superb. but if possible can u describe every single operation which we write in LINQ example we use "new", "=>" etc , if u describe all this, i think it will greatful for all LINQ beginners. All the best, keep posting....