Читайте также: |
|
Language Specification
Version 4.0
Notice
© 1999-2010 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.
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
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............................................................................................. 47
2.5.2 Pre-processing expressions....................................................................................................... 47
2.5.3 Declaration directives............................................................................................................... 48
2.5.4 Conditional compilation directives........................................................................................... 49
2.5.5 Diagnostic directives................................................................................................................ 51
2.5.6 Region directives...................................................................................................................... 52
2.5.7 Line directives.......................................................................................................................... 52
2.5.8 Pragma directives..................................................................................................................... 53
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
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
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....................................................................................................................... 107
5.5 Atomicity of variable references................................................................................................... 107
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
Дата добавления: 2015-11-16; просмотров: 43 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
August, 2013, Crimea, Ukraine | | | Table of Contents 2 страница |