174 lines
9.5 KiB
Markdown
174 lines
9.5 KiB
Markdown
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.
|
|
|
|
<!--
|
|
(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)
|
|
* [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)
|
|
|
|
<!--
|
|
* Grammar: [csharp.html](http://ljw1004.github.io/csharpspec/csharp.html). Or download in ANTLR format: [csharp.g4](csharp.g4?raw=true).
|
|
-->
|