2017-02-01 19:35:24 +01:00
C# Language Specification
===========================
2017-02-14 01:19:55 +01:00
2017-02-01 19:35:24 +01:00
__Version 6__
2019-08-28 11:45:54 +02:00
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.
2017-02-01 19:35:24 +01:00
<!--
(This document is also available for download: [csharp.pdf ](CSharp%20Language%20Specification.pdf?raw=true ) and [csharp.docx ](CSharp%20Language%20Specification.docx?raw=true ))
-->
* [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 )
2017-06-05 21:51:35 +02:00
* [Boxing and unboxing ](types.md#boxing-and-unboxing )
2017-02-01 19:35:24 +01:00
* [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 )
2017-09-08 00:30:46 +02:00
* [Async functions ](classes.md#async-functions )
2017-02-01 19:35:24 +01:00
* [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 )
2017-06-05 21:51:35 +02:00
* [Unsafe contexts ](unsafe-code.md#unsafe-contexts )
2017-02-01 19:35:24 +01:00
* [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 )
<!--
* Grammar: [csharp.html ](http://ljw1004.github.io/csharpspec/csharp.html ). Or download in ANTLR format: [csharp.g4 ](csharp.g4?raw=true ).
2017-06-05 21:51:35 +02:00
-->