It's now possible to create class definitions on the fly. This is the concept of anonymous types, where the type is based on the signature of the class. To create an anonymous type, use the following:
new { First = "B", Second="C" };
With this new type, we now have a new class with a First property of type string, and a Second property of type string. However, nothing happens with the class because we have to store it somewhere. This is where the "var" keyword comes into play:
var stringValue = "X";
var instance = new { First = "B", Second = stringValue };
Instance now represents our anonymous type. The compiler will parse the above syntax and create a standard CLR type which has 2 properties First and Second and assign these properties type based on the inilization values. Here both the property will have type string as they have been inilized as string.
In Visual Studio 2008, there is full intellisense support for this. When creating an anonymous type, make sure a value is supplied to the property, or that it can infer the type from a variable; otherwise, if a null is supplied, a compile error occurs.