PDF Archive

Easily share your PDF documents with your contacts, on the Web and Social Networks.

Share a file Manage my documents Convert Recover PDF Search Help Contact



CSharp Language Specification .pdf



Original filename: CSharp Language Specification.pdf

This PDF 1.5 document has been generated by Microsoft® Word 2010, and has been sent on pdf-archive.com on 21/03/2014 at 12:24, from IP address 195.47.x.x. The current document download page has been viewed 1092 times.
File size: 3.7 MB (527 pages).
Privacy: public file




Download original PDF file









Document preview


#
C
Language Specification
Version 5.0

Copyright  Microsoft Corporation 1999-2012. All Rights Reserved.
Please send corrections, comments, and other feedback to csharp@microsoft.com

Notice
© 1999-2012 Microsoft Corporation. All rights reserved.
Microsoft, Windows, Visual Basic, Visual C#, and Visual C++ are either registered trademarks or trademarks of Microsoft
Corporation in the U.S.A. and/or other countries/regions.
Other product and company names mentioned herein may be the trademarks of their respective owners.

Copyright  Microsoft Corporation 1999-2012. All Rights Reserved.

Table of Contents

Table of Contents
1. Introduction ....................................................................................................................................................... 1
1.1 Hello world .................................................................................................................................................... 1
1.2 Program structure .......................................................................................................................................... 2
1.3 Types and variables ....................................................................................................................................... 4
1.4 Expressions .................................................................................................................................................... 6
1.5 Statements...................................................................................................................................................... 8
1.6 Classes and objects ...................................................................................................................................... 12
1.6.1 Members ............................................................................................................................................... 12
1.6.2 Accessibility.......................................................................................................................................... 13
1.6.3 Type parameters .................................................................................................................................... 13
1.6.4 Base classes........................................................................................................................................... 14
1.6.5 Fields..................................................................................................................................................... 14
1.6.6 Methods ................................................................................................................................................ 15
1.6.6.1 Parameters ...................................................................................................................................... 15
1.6.6.2 Method body and local variables ................................................................................................... 16
1.6.6.3 Static and instance methods ........................................................................................................... 17
1.6.6.4 Virtual, override, and abstract methods.......................................................................................... 18
1.6.6.5 Method overloading ....................................................................................................................... 20
1.6.7 Other function members ....................................................................................................................... 21
1.6.7.1 Constructors ................................................................................................................................... 22
1.6.7.2 Properties........................................................................................................................................ 23
1.6.7.3 Indexers .......................................................................................................................................... 23
1.6.7.4 Events ............................................................................................................................................. 24
1.6.7.5 Operators ........................................................................................................................................ 24
1.6.7.6 Destructors ..................................................................................................................................... 25
1.7 Structs .......................................................................................................................................................... 25
1.8 Arrays .......................................................................................................................................................... 26
1.9 Interfaces ..................................................................................................................................................... 27
1.10 Enums ........................................................................................................................................................ 29
1.11 Delegates ................................................................................................................................................... 30
1.12 Attributes ................................................................................................................................................... 31
2. Lexical structure.............................................................................................................................................. 33
2.1 Programs ...................................................................................................................................................... 33
2.2 Grammars .................................................................................................................................................... 33
2.2.1 Grammar notation ................................................................................................................................. 33
2.2.2 Lexical grammar ................................................................................................................................... 34
2.2.3 Syntactic grammar ................................................................................................................................ 34
2.3 Lexical analysis ........................................................................................................................................... 34
2.3.1 Line terminators .................................................................................................................................... 35
2.3.2 Comments ............................................................................................................................................. 35
2.3.3 White space ........................................................................................................................................... 37
2.4 Tokens ......................................................................................................................................................... 37
2.4.1 Unicode character escape sequences .................................................................................................... 37
2.4.2 Identifiers .............................................................................................................................................. 38
2.4.3 Keywords .............................................................................................................................................. 39
2.4.4 Literals .................................................................................................................................................. 40
2.4.4.1 Boolean literals............................................................................................................................... 40
2.4.4.2 Integer literals................................................................................................................................. 40
Copyright  Microsoft Corporation 1999-2012. All Rights Reserved.

iii

C# LANGUAGE SPECIFICATION

2.4.4.3 Real literals..................................................................................................................................... 41
2.4.4.4 Character literals ............................................................................................................................ 42
2.4.4.5 String literals .................................................................................................................................. 43
2.4.4.6 The null literal ................................................................................................................................ 45
2.4.5 Operators and punctuators .................................................................................................................... 45
2.5 Pre-processing directives ............................................................................................................................. 45
2.5.1 Conditional compilation symbols ......................................................................................................... 46
2.5.2 Pre-processing expressions ................................................................................................................... 47
2.5.3 Declaration directives ........................................................................................................................... 47
2.5.4 Conditional compilation directives ....................................................................................................... 48
2.5.5 Diagnostic directives............................................................................................................................. 51
2.5.6 Region directives .................................................................................................................................. 51
2.5.7 Line directives....................................................................................................................................... 52
2.5.8 Pragma directives .................................................................................................................................. 52
2.5.8.1 Pragma warning.............................................................................................................................. 53
3. Basic concepts .................................................................................................................................................. 55
3.1 Application Startup ...................................................................................................................................... 55
3.2 Application termination ............................................................................................................................... 56
3.3 Declarations ................................................................................................................................................. 56
3.4 Members ...................................................................................................................................................... 58
3.4.1 Namespace members ............................................................................................................................ 58
3.4.2 Struct members ..................................................................................................................................... 59
3.4.3 Enumeration members .......................................................................................................................... 59
3.4.4 Class members ...................................................................................................................................... 59
3.4.5 Interface members................................................................................................................................. 60
3.4.6 Array members ..................................................................................................................................... 60
3.4.7 Delegate members................................................................................................................................. 60
3.5 Member access ............................................................................................................................................ 60
3.5.1 Declared accessibility ........................................................................................................................... 60
3.5.2 Accessibility domains ........................................................................................................................... 61
3.5.3 Protected access for instance members ................................................................................................. 63
3.5.4 Accessibility constraints ....................................................................................................................... 64
3.6 Signatures and overloading ......................................................................................................................... 65
3.7 Scopes .......................................................................................................................................................... 66
3.7.1 Name hiding.......................................................................................................................................... 69
3.7.1.1 Hiding through nesting ................................................................................................................... 69
3.7.1.2 Hiding through inheritance............................................................................................................. 70
3.8 Namespace and type names ......................................................................................................................... 71
3.8.1 Fully qualified names............................................................................................................................ 73
3.9 Automatic memory management................................................................................................................. 73
3.10 Execution order ......................................................................................................................................... 76
4. Types ................................................................................................................................................................ 77
4.1 Value types .................................................................................................................................................. 77
4.1.1 The System.ValueType type ................................................................................................................. 78
4.1.2 Default constructors .............................................................................................................................. 78
4.1.3 Struct types ........................................................................................................................................... 79
4.1.4 Simple types .......................................................................................................................................... 79
4.1.5 Integral types......................................................................................................................................... 80
4.1.6 Floating point types .............................................................................................................................. 81

iv

Copyright  Microsoft Corporation 1999-2012. All Rights Reserved.

Table of Contents

4.1.7 The decimal type ................................................................................................................................... 82
4.1.8 The bool type ........................................................................................................................................ 83
4.1.9 Enumeration types ................................................................................................................................ 83
4.1.10 Nullable types ..................................................................................................................................... 83
4.2 Reference types ........................................................................................................................................... 83
4.2.1 Class types ............................................................................................................................................ 84
4.2.2 The object type...................................................................................................................................... 85
4.2.3 The dynamic type.................................................................................................................................. 85
4.2.4 The string type ...................................................................................................................................... 85
4.2.5 Interface types ....................................................................................................................................... 85
4.2.6 Array types ............................................................................................................................................ 85
4.2.7 Delegate types ....................................................................................................................................... 85
4.3 Boxing and unboxing .................................................................................................................................. 86
4.3.1 Boxing conversions............................................................................................................................... 86
4.3.2 Unboxing conversions .......................................................................................................................... 87
4.4 Constructed types ........................................................................................................................................ 88
4.4.1 Type arguments..................................................................................................................................... 89
4.4.2 Open and closed types .......................................................................................................................... 89
4.4.3 Bound and unbound types ..................................................................................................................... 89
4.4.4 Satisfying constraints ............................................................................................................................ 89
4.5 Type parameters .......................................................................................................................................... 90
4.6 Expression tree types ................................................................................................................................... 91
4.7 The dynamic type ........................................................................................................................................ 92
5. Variables .......................................................................................................................................................... 93
5.1 Variable categories ...................................................................................................................................... 93
5.1.1 Static variables ...................................................................................................................................... 93
5.1.2 Instance variables .................................................................................................................................. 93
5.1.2.1 Instance variables in classes ........................................................................................................... 93
5.1.2.2 Instance variables in structs............................................................................................................ 94
5.1.3 Array elements ...................................................................................................................................... 94
5.1.4 Value parameters .................................................................................................................................. 94
5.1.5 Reference parameters ............................................................................................................................ 94
5.1.6 Output parameters ................................................................................................................................. 94
5.1.7 Local variables ...................................................................................................................................... 95
5.2 Default values .............................................................................................................................................. 96
5.3 Definite assignment ..................................................................................................................................... 96
5.3.1 Initially assigned variables .................................................................................................................... 97
5.3.2 Initially unassigned variables ................................................................................................................ 97
5.3.3 Precise rules for determining definite assignment ................................................................................ 97
5.3.3.1 General rules for statements ........................................................................................................... 98
5.3.3.2 Block statements, checked, and unchecked statements .................................................................. 98
5.3.3.3 Expression statements .................................................................................................................... 98
5.3.3.4 Declaration statements ................................................................................................................... 98
5.3.3.5 If statements ................................................................................................................................... 98
5.3.3.6 Switch statements ........................................................................................................................... 99
5.3.3.7 While statements ............................................................................................................................ 99
5.3.3.8 Do statements ................................................................................................................................. 99
5.3.3.9 For statements .............................................................................................................................. 100
5.3.3.10 Break, continue, and goto statements ......................................................................................... 100
5.3.3.11 Throw statements ....................................................................................................................... 100
Copyright  Microsoft Corporation 1999-2012. All Rights Reserved.

v

C# LANGUAGE SPECIFICATION

5.3.3.12 Return statements ....................................................................................................................... 100
5.3.3.13 Try-catch statements .................................................................................................................. 100
5.3.3.14 Try-finally statements ................................................................................................................ 101
5.3.3.15 Try-catch-finally statements ....................................................................................................... 101
5.3.3.16 Foreach statements ..................................................................................................................... 102
5.3.3.17 Using statements ........................................................................................................................ 102
5.3.3.18 Lock statements .......................................................................................................................... 102
5.3.3.19 Yield statements ......................................................................................................................... 103
5.3.3.20 General rules for simple expressions.......................................................................................... 103
5.3.3.21 General rules for expressions with embedded expressions ........................................................ 103
5.3.3.22 Invocation expressions and object creation expressions ............................................................ 103
5.3.3.23 Simple assignment expressions .................................................................................................. 104
5.3.3.24 && expressions .......................................................................................................................... 104
5.3.3.25 || expressions............................................................................................................................... 105
5.3.3.26 ! expressions ............................................................................................................................... 106
5.3.3.27 ?? expressions............................................................................................................................. 106
5.3.3.28 ?: expressions ............................................................................................................................. 106
5.3.3.29 Anonymous functions ................................................................................................................ 107
5.4 Variable references .................................................................................................................................... 108
5.5 Atomicity of variable references ............................................................................................................... 108
6. Conversions.................................................................................................................................................... 109
6.1 Implicit conversions .................................................................................................................................. 109
6.1.1 Identity conversion ............................................................................................................................. 109
6.1.2 Implicit numeric conversions .............................................................................................................. 110
6.1.3 Implicit enumeration conversions ....................................................................................................... 110
6.1.4 Implicit nullable conversions .............................................................................................................. 110
6.1.5 Null literal conversions ....................................................................................................................... 111
6.1.6 Implicit reference conversions ............................................................................................................ 111
6.1.7 Boxing conversions............................................................................................................................. 111
6.1.8 Implicit dynamic conversions ............................................................................................................. 112
6.1.9 Implicit constant expression conversions ........................................................................................... 112
6.1.10 Implicit conversions involving type parameters ............................................................................... 112
6.1.11 User-defined implicit conversions .................................................................................................... 113
6.1.12 Anonymous function conversions and method group conversions................................................... 113
6.2 Explicit conversions .................................................................................................................................. 113
6.2.1 Explicit numeric conversions.............................................................................................................. 114
6.2.2 Explicit enumeration conversions ....................................................................................................... 115
6.2.3 Explicit nullable conversions .............................................................................................................. 115
6.2.4 Explicit reference conversions ............................................................................................................ 116
6.2.5 Unboxing conversions ........................................................................................................................ 117
6.2.6 Explicit dynamic conversions ............................................................................................................. 117
6.2.7 Explicit conversions involving type parameters ................................................................................. 118
6.2.8 User-defined explicit conversions....................................................................................................... 119
6.3 Standard conversions ................................................................................................................................. 119
6.3.1 Standard implicit conversions ............................................................................................................. 119
6.3.2 Standard explicit conversions ............................................................................................................. 119
6.4 User-defined conversions .......................................................................................................................... 119
6.4.1 Permitted user-defined conversions .................................................................................................... 119
6.4.2 Lifted conversion operators ................................................................................................................ 120
6.4.3 Evaluation of user-defined conversions .............................................................................................. 120

vi

Copyright  Microsoft Corporation 1999-2012. All Rights Reserved.

Table of Contents

6.4.4 User-defined implicit conversions ...................................................................................................... 121
6.4.5 User-defined explicit conversions....................................................................................................... 122
6.5 Anonymous function conversions ............................................................................................................. 123
6.5.1 Evaluation of anonymous function conversions to delegate types ..................................................... 124
6.5.2 Evaluation of anonymous function conversions to expression tree types........................................... 124
6.5.3 Implementation example ..................................................................................................................... 125
6.6 Method group conversions ........................................................................................................................ 127
7. Expressions .................................................................................................................................................... 131
7.1 Expression classifications .......................................................................................................................... 131
7.1.1 Values of expressions ......................................................................................................................... 132
7.2 Static and Dynamic Binding ...................................................................................................................... 132
7.2.1 Binding-time ....................................................................................................................................... 133
7.2.2 Dynamic binding................................................................................................................................. 133
7.2.3 Types of constituent expressions ........................................................................................................ 133
7.3 Operators ................................................................................................................................................... 134
7.3.1 Operator precedence and associativity................................................................................................ 134
7.3.2 Operator overloading .......................................................................................................................... 135
7.3.3 Unary operator overload resolution .................................................................................................... 137
7.3.4 Binary operator overload resolution ................................................................................................... 137
7.3.5 Candidate user-defined operators ....................................................................................................... 137
7.3.6 Numeric promotions ........................................................................................................................... 137
7.3.6.1 Unary numeric promotions........................................................................................................... 138
7.3.6.2 Binary numeric promotions .......................................................................................................... 138
7.3.7 Lifted operators ................................................................................................................................... 139
7.4 Member lookup ......................................................................................................................................... 140
7.4.1 Base types ........................................................................................................................................... 141
7.5 Function members ..................................................................................................................................... 141
7.5.1 Argument lists ..................................................................................................................................... 143
7.5.1.1 Corresponding parameters............................................................................................................ 144
7.5.1.2 Run-time evaluation of argument lists ......................................................................................... 145
7.5.2 Type inference .................................................................................................................................... 147
7.5.2.1 The first phase .............................................................................................................................. 148
7.5.2.2 The second phase ......................................................................................................................... 148
7.5.2.3 Input types .................................................................................................................................... 148
7.5.2.4 Output types ................................................................................................................................. 148
7.5.2.5 Dependence .................................................................................................................................. 148
7.5.2.6 Output type inferences ................................................................................................................. 148
7.5.2.7 Explicit parameter type inferences ............................................................................................... 149
7.5.2.8 Exact inferences ........................................................................................................................... 149
7.5.2.9 Lower-bound inferences............................................................................................................... 149
7.5.2.10 Upper-bound inferences ............................................................................................................. 150
7.5.2.11 Fixing ......................................................................................................................................... 150
7.5.2.12 Inferred return type..................................................................................................................... 151
7.5.2.13 Type inference for conversion of method groups ...................................................................... 152
7.5.2.14 Finding the best common type of a set of expressions ............................................................... 152
7.5.3 Overload resolution............................................................................................................................. 152
7.5.3.1 Applicable function member ........................................................................................................ 153
7.5.3.2 Better function member ................................................................................................................ 154
7.5.3.3 Better conversion from expression ............................................................................................... 155
7.5.3.4 Better conversion from type ......................................................................................................... 155
Copyright  Microsoft Corporation 1999-2012. All Rights Reserved.

vii

C# LANGUAGE SPECIFICATION

7.5.3.5 Better conversion target ............................................................................................................... 155
7.5.3.6 Overloading in generic classes ..................................................................................................... 155
7.5.4 Compile-time checking of dynamic overload resolution .................................................................... 156
7.5.5 Function member invocation .............................................................................................................. 156
7.5.5.1 Invocations on boxed instances .................................................................................................... 157
7.6 Primary expressions................................................................................................................................... 158
7.6.1 Literals ................................................................................................................................................ 158
7.6.2 Simple names ...................................................................................................................................... 158
7.6.2.1 Invariant meaning in blocks ......................................................................................................... 160
7.6.3 Parenthesized expressions ................................................................................................................... 161
7.6.4 Member access .................................................................................................................................... 161
7.6.4.1 Identical simple names and type names ....................................................................................... 163
7.6.4.2 Grammar ambiguities ................................................................................................................... 163
7.6.5 Invocation expressions ........................................................................................................................ 164
7.6.5.1 Method invocations ...................................................................................................................... 164
7.6.5.2 Extension method invocations ..................................................................................................... 166
7.6.5.3 Delegate invocations .................................................................................................................... 168
7.6.6 Element access .................................................................................................................................... 168
7.6.6.1 Array access ................................................................................................................................. 169
7.6.6.2 Indexer access .............................................................................................................................. 169
7.6.7 This access .......................................................................................................................................... 170
7.6.8 Base access ......................................................................................................................................... 171
7.6.9 Postfix increment and decrement operators ........................................................................................ 171
7.6.10 The new operator .............................................................................................................................. 172
7.6.10.1 Object creation expressions ........................................................................................................ 172
7.6.10.2 Object initializers ....................................................................................................................... 174
7.6.10.3 Collection initializers ................................................................................................................. 176
7.6.10.4 Array creation expressions ......................................................................................................... 177
7.6.10.5 Delegate creation expressions .................................................................................................... 179
7.6.10.6 Anonymous object creation expressions .................................................................................... 180
7.6.11 The typeof operator ........................................................................................................................... 181
7.6.12 The checked and unchecked operators.............................................................................................. 183
7.6.13 Default value expressions ................................................................................................................. 185
7.6.14 Anonymous method expressions ...................................................................................................... 186
7.7 Unary operators ......................................................................................................................................... 186
7.7.1 Unary plus operator............................................................................................................................. 186
7.7.2 Unary minus operator ......................................................................................................................... 186
7.7.3 Logical negation operator ................................................................................................................... 187
7.7.4 Bitwise complement operator ............................................................................................................. 187
7.7.5 Prefix increment and decrement operators.......................................................................................... 188
7.7.6 Cast expressions .................................................................................................................................. 188
7.8 Arithmetic operators .................................................................................................................................. 191
7.8.1 Multiplication operator ....................................................................................................................... 191
7.8.2 Division operator ................................................................................................................................ 192
7.8.3 Remainder operator............................................................................................................................. 193
7.8.4 Addition operator ................................................................................................................................ 194
7.8.5 Subtraction operator ............................................................................................................................ 196
7.9 Shift operators ........................................................................................................................................... 197
7.10 Relational and type-testing operators ...................................................................................................... 199
7.10.1 Integer comparison operators ............................................................................................................ 199
7.10.2 Floating-point comparison operators ................................................................................................ 200
viii

Copyright  Microsoft Corporation 1999-2012. All Rights Reserved.

Table of Contents

7.10.3 Decimal comparison operators ......................................................................................................... 201
7.10.4 Boolean equality operators ............................................................................................................... 201
7.10.5 Enumeration comparison operators .................................................................................................. 201
7.10.6 Reference type equality operators ..................................................................................................... 201
7.10.7 String equality operators ................................................................................................................... 203
7.10.8 Delegate equality operators............................................................................................................... 203
7.10.9 Equality operators and null ............................................................................................................... 204
7.10.10 The is operator ................................................................................................................................ 204
7.10.11 The as operator................................................................................................................................ 204
7.11 Logical operators ..................................................................................................................................... 205
7.11.1 Integer logical operators ................................................................................................................... 206
7.11.2 Enumeration logical operators .......................................................................................................... 206
7.11.3 Boolean logical operators ................................................................................................................. 206
7.11.4 Nullable boolean logical operators ................................................................................................... 206
7.12 Conditional logical operators................................................................................................................... 207
7.12.1 Boolean conditional logical operators............................................................................................... 208
7.12.2 User-defined conditional logical operators ....................................................................................... 208
7.13 The null coalescing operator.................................................................................................................... 208
7.14 Conditional operator ................................................................................................................................ 209
7.15 Anonymous function expressions............................................................................................................ 210
7.15.1 Anonymous function signatures ....................................................................................................... 212
7.15.2 Anonymous function bodies ............................................................................................................. 212
7.15.3 Overload resolution........................................................................................................................... 213
7.15.4 Anonymous functions and dynamic binding .................................................................................... 213
7.15.5 Outer variables .................................................................................................................................. 214
7.15.5.1 Captured outer variables............................................................................................................. 214
7.15.5.2 Instantiation of local variables ................................................................................................... 214
7.15.6 Evaluation of anonymous function expressions................................................................................ 217
7.16 Query expressions ................................................................................................................................... 217
7.16.1 Ambiguities in query expressions ..................................................................................................... 218
7.16.2 Query expression translation............................................................................................................. 218
7.16.2.1 Select and groupby clauses with continuations .......................................................................... 219
7.16.2.2 Explicit range variable types ...................................................................................................... 219
7.16.2.3 Degenerate query expressions .................................................................................................... 220
7.16.2.4 From, let, where, join and orderby clauses................................................................................. 220
7.16.2.5 Select clauses.............................................................................................................................. 223
7.16.2.6 Groupby clauses ......................................................................................................................... 224
7.16.2.7 Transparent identifiers................................................................................................................ 224
7.16.3 The query expression pattern ............................................................................................................ 226
7.17 Assignment operators .............................................................................................................................. 227
7.17.1 Simple assignment ............................................................................................................................ 227
7.17.2 Compound assignment ...................................................................................................................... 229
7.17.3 Event assignment .............................................................................................................................. 230
7.18 Expression ............................................................................................................................................... 230
7.19 Constant expressions ............................................................................................................................... 231
7.20 Boolean expressions ................................................................................................................................ 232
8. Statements ...................................................................................................................................................... 233
8.1 End points and reachability ....................................................................................................................... 233
8.2 Blocks ........................................................................................................................................................ 235
8.2.1 Statement lists ..................................................................................................................................... 235
Copyright  Microsoft Corporation 1999-2012. All Rights Reserved.

ix


Related documents


csharp language specification
javasyllabus
adm
cs1371 2016 fall syllabus
asmarterwaytolearnjavascript
ingles netgear cg3100d


Related keywords