C# Language Specification =========================== __Version 6__ This is an unofficial draft, posted here for convenience. When we submit a C# 6.0 spec proposal to ECMA, it will be shared here. * [Introduction](introduction.md) * [Hello world](introduction.md#hello-world) * [Program structure](introduction.md#program-structure) * [Types and variables](introduction.md#types-and-variables) * [Expressions](introduction.md#expressions) * [Statements](introduction.md#statements) * [Classes and objects](introduction.md#classes-and-objects) * [Lexical structure](lexical-structure.md) * [Programs](lexical-structure.md#programs) * [Grammars](lexical-structure.md#grammars) * [Lexical analysis](lexical-structure.md#lexical-analysis) * [Tokens](lexical-structure.md#tokens) * [Pre-processing directives](lexical-structure.md#pre-processing-directives) * [Basic concepts](basic-concepts.md) * [Application Startup](basic-concepts.md#application-startup) * [Application termination](basic-concepts.md#application-termination) * [Declarations](basic-concepts.md#declarations) * [Members](basic-concepts.md#members) * [Member access](basic-concepts.md#member-access) * [Signatures and overloading](basic-concepts.md#signatures-and-overloading) * [Scopes](basic-concepts.md#scopes) * [Namespace and type names](basic-concepts.md#namespace-and-type-names) * [Automatic memory management](basic-concepts.md#automatic-memory-management) * [Execution order](basic-concepts.md#execution-order) * [Types](types.md) * [Value types](types.md#value-types) * [Reference types](types.md#reference-types) * [Boxing and unboxing](types.md#boxing-and-unboxing) * [Constructed types](types.md#constructed-types) * [Type parameters](types.md#type-parameters) * [Expression tree types](types.md#expression-tree-types) * [The dynamic type](types.md#the-dynamic-type) * [Variables](variables.md) * [Variable categories](variables.md#variable-categories) * [Default values](variables.md#default-values) * [Definite assignment](variables.md#definite-assignment) * [Variable references](variables.md#variable-references) * [Atomicity of variable references](variables.md#atomicity-of-variable-references) * [Conversions](conversions.md) * [Implicit conversions](conversions.md#implicit-conversions) * [Explicit conversions](conversions.md#explicit-conversions) * [Standard conversions](conversions.md#standard-conversions) * [User-defined conversions](conversions.md#user-defined-conversions) * [Anonymous function conversions](conversions.md#anonymous-function-conversions) * [Method group conversions](conversions.md#method-group-conversions) * [Expressions](expressions.md) * [Expression classifications](expressions.md#expression-classification) * [Static and Dynamic Binding](expressions.md#static-and-dynamic-binding) * [Operators](expressions.md#operators) * [Member lookup](expressions.md#member-lookup) * [Function members](expressions.md#function-members) * [Primary expressions](expressions.md#primary-expressions) * [Unary operators](expressions.md#unary-operators) * [Arithmetic operators](expressions.md#arithmetic-operators) * [Shift operators](expressions.md#shift-operators) * [Relational and type-testing operators](expressions.md#relational-and-type-testing-operators) * [Logical operators](expressions.md#logical-operators) * [Conditional logical operators](expressions.md#conditional-logical-operators) * [The null coalescing operator](expressions.md#the-null-coalescing-operator) * [Conditional operator](expressions.md#conditional-operator) * [Anonymous function expressions](expressions.md#anonymous-function-expressions) * [Query expressions](expressions.md#query-expressions) * [Assignment operators](expressions.md#assignment-operators) * [Expression](expressions.md#expression) * [Constant expressions](expressions.md#constant-expressions) * [Boolean expressions](expressions.md#boolean-expressions) * [Statements](statements.md) * [End points and reachability](statements.md#end-points-and-reachability) * [Blocks](statements.md#blocks) * [The empty statement](statements.md#the-empty-statement) * [Labeled statements](statements.md#labeled-statements) * [Declaration statements](statements.md#declaration-statements) * [Expression statements](statements.md#expression-statements) * [Selection statements](statements.md#selection-statements) * [Iteration statements](statements.md#iteration-statements) * [Jump statements](statements.md#jump-statements) * [The try statement](statements.md#the-try-statement) * [The checked and unchecked statements](statements.md#the-checked-and-unchecked-statements) * [The lock statement](statements.md#the-lock-statement) * [The using statement](statements.md#the-using-statement) * [The yield statement](statements.md#the-yield-statement) * [Namespaces](namespaces.md) * [Compilation units](namespaces.md#compilation-units) * [Namespace declarations](namespaces.md#namespace-declarations) * [Extern aliases](namespaces.md#extern-aliases) * [Using directives](namespaces.md#using-directives) * [Namespace members](namespaces.md#namespace-members) * [Type declarations](namespaces.md#type-declarations) * [Namespace alias qualifiers](namespaces.md#namespace-alias-qualifiers) * [Classes](classes.md) * [Class declarations](classes.md#class-declarations) * [Partial types](classes.md#partial-types) * [Class members](classes.md#class-members) * [Constants](classes.md#constants) * [Fields](classes.md#fields) * [Methods](classes.md#methods) * [Properties](classes.md#properties) * [Events](classes.md#events) * [Indexers](classes.md#indexers) * [Operators](classes.md#operators) * [Instance constructors](classes.md#instance-constructors) * [Static constructors](classes.md#static-constructors) * [Destructors](classes.md#destructors) * [Iterators](classes.md#iterators) * [Async functions](classes.md#async-functions) * [Structs](structs.md) * [Struct declarations](structs.md#struct-declarations) * [Struct members](structs.md#struct-members) * [Class and struct differences](structs.md#class-and-struct-differences) * [Struct examples](structs.md#struct-examples) * [Arrays](arrays.md) * [Array types](arrays.md#array-types) * [Array creation](arrays.md#array-creation) * [Array element access](arrays.md#array-element-access) * [Array members](arrays.md#array-members) * [Array covariance](arrays.md#array-covariance) * [Array initializers](arrays.md#array-initializers) * [Interfaces](interfaces.md) * [Interface declarations](interfaces.md#interface-declarations) * [Interface members](interfaces.md#interface-members) * [Fully qualified interface member names](interfaces.md#fully-qualified-interface-member-names) * [Interface implementations](interfaces.md#interface-implementations) * [Enums](enums.md) * [Enum declarations](enums.md#enum-declarations) * [Enum modifiers](enums.md#enum-modifiers) * [Enum members](enums.md#enum-members) * [The System.Enum type](enums.md#the-systemenum-type) * [Enum values and operations](enums.md#enum-values-and-operations) * [Delegates](delegates.md) * [Delegate declarations](delegates.md#delegate-declarations) * [Delegate compatibility](delegates.md#delegate-compatibility) * [Delegate instantiation](delegates.md#delegate-instantiation) * [Delegate invocation](delegates.md#delegate-invocation) * [Exceptions](exceptions.md) * [Causes of exceptions](exceptions.md#causes-of-exceptions) * [The System.Exception class](exceptions.md#the-systemexception-class) * [How exceptions are handled](exceptions.md#how-exceptions-are-handled) * [Common Exception Classes](exceptions.md#common-exception-classes) * [Attributes](attributes.md) * [Attribute classes](attributes.md#attribute-classes) * [Attribute specification](attributes.md#attribute-specification) * [Attribute instances](attributes.md#attribute-instances) * [Reserved attributes](attributes.md#reserved-attributes) * [Attributes for Interoperation](attributes.md#attributes-for-interoperation) * [Unsafe code](unsafe-code.md) * [Unsafe contexts](unsafe-code.md#unsafe-contexts) * [Pointer types](unsafe-code.md#pointer-types) * [Fixed and moveable variables](unsafe-code.md#fixed-and-moveable-variables) * [Pointer conversions](unsafe-code.md#pointer-conversions) * [Pointers in expressions](unsafe-code.md#pointers-in-expressions) * [The fixed statement](unsafe-code.md#the-fixed-statement) * [Fixed size buffers](unsafe-code.md#fixed-size-buffers) * [Stack allocation](unsafe-code.md#stack-allocation) * [Dynamic memory allocation](unsafe-code.md#dynamic-memory-allocation) * [Documentation comments](documentation-comments.md) * [Introduction](documentation-comments.md#introduction) * [Recommended tags](documentation-comments.md#recommended-tags) * [Processing the documentation file](documentation-comments.md#processing-the-documentation-file) * [An example](documentation-comments.md#an-example)