The C# 3.0 language enhancements consist of:
• Anonymous types – are types which are automatically inferred and created from object initializers
• Implicitly typed local variables – This permits the type of local variables to be inferred from the expressions used to initialize them.
• Auto-implemented properties – This is used to automate the process of creating properties.
• Implicitly typed arrays – This is used for array creation and initialization that infers the element type of the array from an array initializer.
• Extension methods – This makes it possible to extend existing types and constructed types with additional methods.
• Lambda expressions – an evolution of anonymous methods that concisely improves type inference and conversions to both delegate types and expression trees.
• Expression trees, which permit lambda expressions to be represented as data (expression trees) instead of as code (delegates).
• Object and collection initializers, which you can use to conveniently specify values for one or more fields or properties for a newly created object, combining creation and initialization into a single step.
• Query expressions, which provide a language-integrated syntax for queries that is similar to relational and hierarchical query languages such as SQL and XQuery.