1. Generics : allow classes, structs, interfaces, delegates, and methods to be parameterized by the types of data they store and manipulate.
2. Anonymous methods that allow code blocks to be written “inline” where delegate values are expected.
3. Iterators, which are methods to incrementally compute and yield sequences of values.
4. Partial types that allow classes, structs, and interfaces to be broken into multiple pieces stored in different source files for easier development and maintenance.
5. Nullable types that represent values that possibly are unknown; they support all possible values of an underlying type plus an additional null state.
6. Implicit Variables : Implicit typing of local variables, which permits the types of local variables to be inferred from the expressions used to initialize them.
7. Extension methods : which make it possible to extend existing types and constructed types with additional methods, outside their definitions.
8. Lambda expressions : an evolution of anonymous methods that provide improved type inference and conversions to both delegate types and expression trees.
9. Object initializers, which ease construction and initialization of objects.
10. Anonymous types, which are tuple types automatically inferred and created from object initializers.
11. Implicit typing of arrays, which is a form of array creation and initialization together where the element type of the array is inferred from the initializer.
12. Query expressions, which provide a language-integrated syntax for queries that is similar to relational and hierarchical query languages, such as SQL and XQuery.
No comments:
Post a Comment