There is a new type called var in C# 3.0.  Var simply means that the compiler infers the type from whatever you assign to it.  Before I start, it is not a variant and it is not something that is loosely typed.
Take these examples (pre C# 3.0):
string myString = “hello”;
int myInt = 5;
float myFloat = 5.5f;
Here is how they can be represented in C# 3.0:
var myString = “hello”;
var myInt = 5;
var myFloat = 5.5f;
In this case, myString is declared as a string when it comes down to it.  If you later try to assign an int to it, you would get an error.  The power of this is that you can create whole new data types dynamically without having to actually create them first.
This is one of the primary technologies used in Language Integrated Query (LINQ).  There are several more things like this that I will show you soon.  The article below provides even more detail.

Read the complete post at