1、Adopted by INCITS (InterNational Committee for Information Technology Standards) as an American National Standard.Date of ANSI Approval: 12/24/2003Published by American National Standards Institute,25 West 43rd Street, New York, New York 10036Copyright 2003 by Information Technology Industry Council
2、 (ITI).All rights reserved.These materials are subject to copyright claims of International Standardization Organization (ISO), InternationalElectrotechnical Commission (IEC), American National Standards Institute (ANSI), and Information Technology Industry Council(ITI). Not for resale. No part of t
3、his publication may be reproduced in any form, including an electronic retrieval system, withoutthe prior written permission of ITI. All requests pertaining to this standard should be submitted to ITI, 1250 Eye Street NW,Washington, DC 20005.Printed in the United States of AmericaReference numberISO
4、/IEC 23270:2003(E)ISO/IEC 2003INTERNATIONAL STANDARD ISO/IEC23270First edition2003-04-01Information technology C# Language Specification Technologies de linformation Spcification du langage C# ISO/IEC 23270:2003(E) PDF disclaimer This PDF file may contain embedded typefaces. In accordance with Adobe
5、s licensing policy, this file may be printed or viewed but shall not be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In downloading this file, parties accept therein the responsibility of not infringing Adobes licensing policy.
6、The ISO Central Secretariat accepts no liability in this area. Adobe is a trademark of Adobe Systems Incorporated. Details of the software products used to create this PDF file can be found in the General Info relative to the file; the PDF-creation parameters were optimized for printing. Every care
7、has been taken to ensure that the file is suitable for use by ISO member bodies. In the unlikely event that a problem relating to it is found, please inform the Central Secretariat at the address given below. ISO/IEC 2003 All rights reserved. Unless otherwise specified, no part of this publication m
8、ay be reproduced or utilized in any form or by any means, electronic or mechanical, including photocopying and microfilm, without permission in writing from either ISO at the address below or ISOs member body in the country of the requester. ISO copyright office Case postale 56 CH-1211 Geneva 20 Tel
9、. + 41 22 749 01 11 Fax + 41 22 749 09 47 E-mail copyrightiso.org Web www.iso.org Published in Switzerland ii ISO/IEC 2003 All rights reservedISO/IEC 23270:2003(E) ISO/IEC 2003 All rights reserved iii Table of Contents 1. Scope. 1 2. Conformance . 3 3. References 5 4. Definitions 7 5. Notational con
10、ventions 9 6. Acronyms and abbreviations . 11 7. General description. 13 8. Language Overview 15 8.1 Getting started . 15 8.2 Types . 16 8.2.1 Predefined types17 8.2.2 Conversions 19 8.2.3 Array types20 8.2.4 Type system unification21 8.3 Variables and parameters. 22 8.4 Automatic memory management.
11、 25 8.5 Expressions 27 8.6 Statements 28 8.7 Classes . 31 8.7.1 Constants.32 8.7.2 Fields.33 8.7.3 Methods 34 8.7.4 Properties 35 8.7.5 Events36 8.7.6 Operators.37 8.7.7 Indexers.38 8.7.8 Instance constructors.39 8.7.9 Destructors 39 8.7.10 Static constructors.40 8.7.11 Inheritance 40 8.8 Structs 41
12、 8.9 Interfaces . 42 8.10 Delegates . 43 8.11 Enums 44 8.12 Namespaces and assemblies 45 8.13 Versioning . 46 8.14 Attributes . 48 9. Lexical structure 51 9.1 Programs 51 9.2 Grammars 51 9.2.1 Lexical grammar .51 9.2.2 Syntactic grammar 51 9.3 Lexical analysis . 52 9.3.1 Line terminators52 9.3.2 Com
13、ments .53 ISO/IEC 23270:2003(E) iv ISO/IEC 2003 All rights reserved 9.3.3 White space.54 9.4 Tokens . 54 9.4.1 Unicode escape sequences 54 9.4.2 Identifiers55 9.4.3 Keywords56 9.4.4 Literals 57 9.4.5 Operators and punctuators 62 9.5 Pre-processing directives. 62 9.5.1 Conditional compilation symbols
14、 .63 9.5.2 Pre-processing expressions .63 9.5.3 Declaration directives .64 9.5.4 Conditional compilation directives .65 9.5.5 Diagnostic directives.67 9.5.6 Region control.67 9.5.7 Line directives.68 10. Basic concepts 69 10.1 Application startup 69 10.2 Application termination. 69 10.3 Declarations
15、. 70 10.4 Members 72 10.4.1 Namespace members 72 10.4.2 Struct members .72 10.4.3 Enumeration members 73 10.4.4 Class members 73 10.4.5 Interface members.73 10.4.6 Array members .73 10.4.7 Delegate members.73 10.5 Member access 73 10.5.1 Declared accessibility .74 10.5.2 Accessibility domains .74 10
16、.5.3 Protected access for instance members.77 10.5.4 Accessibility constraints .77 10.6 Signatures and overloading . 78 10.7 Scopes 79 10.7.1 Name hiding81 10.8 Namespace and type names. 83 10.8.1 Fully qualified names84 10.9 Automatic memory management. 85 10.10 Execution order . 87 11. Types 89 11
17、.1 Value types 89 11.1.1 Default constructors90 11.1.2 Struct types .90 11.1.3 Simple types91 11.1.4 Integral types.91 11.1.5 Floating point types.92 11.1.6 The decimal type.94 11.1.7 The bool type94 11.1.8 Enumeration types 94 11.2 Reference types . 94 11.2.1 Class types 95 11.2.2 The object type.9
18、5 11.2.3 The string type.95 ISO/IEC 23270:2003(E) ISO/IEC 2003 All rights reserved v 11.2.4 Interface types.96 11.2.5 Array types96 11.2.6 Delegate types.96 11.3 Boxing and unboxing 96 11.3.1 Boxing conversions.96 11.3.2 Unboxing conversions 97 12. Variables 99 12.1 Variable categories 99 12.1.1 Sta
19、tic variables99 12.1.2 Instance variables99 12.1.3 Array elements100 12.1.4 Value parameters 100 12.1.5 Reference parameters100 12.1.6 Output parameters.100 12.1.7 Local variables101 12.2 Default values 101 12.3 Definite assignment . 102 12.3.1 Initially assigned variables102 12.3.2 Initially unassi
20、gned variables103 12.3.3 Precise rules for determining definite assignment 103 12.4 Variable references 112 12.5 Atomicity of variable references . 112 13. Conversions 113 13.1 Implicit conversions 113 13.1.1 Identity conversion .113 13.1.2 Implicit numeric conversions113 13.1.3 Implicit enumeration
21、 conversions.114 13.1.4 Implicit reference conversions114 13.1.5 Boxing conversions.114 13.1.6 Implicit constant expression conversions .114 13.1.7 User-defined implicit conversions 115 13.2 Explicit conversions 115 13.2.1 Explicit numeric conversions115 13.2.2 Explicit enumeration conversions.117 1
22、3.2.3 Explicit reference conversions117 13.2.4 Unboxing conversions 117 13.2.5 User-defined explicit conversions.118 13.3 Standard conversions. 118 13.3.1 Standard implicit conversions.118 13.3.2 Standard explicit conversions .118 13.4 User-defined conversions 118 13.4.1 Permitted user-defined conve
23、rsions118 13.4.2 Evaluation of user-defined conversions119 13.4.3 User-defined implicit conversions 119 13.4.4 User-defined explicit conversions.120 14. Expressions 123 14.1 Expression classifications 123 14.1.1 Values of expressions .124 14.2 Operators . 124 14.2.1 Operator precedence and associati
24、vity124 14.2.2 Operator overloading 125 14.2.3 Unary operator overload resolution 126 14.2.4 Binary operator overload resolution .127 ISO/IEC 23270:2003(E) vi ISO/IEC 2003 All rights reserved 14.2.5 Candidate user-defined operators .127 14.2.6 Numeric promotions .127 14.3 Member lookup . 129 14.3.1
25、Base types .129 14.4 Function members . 130 14.4.1 Argument lists.132 14.4.2 Overload resolution.134 14.4.3 Function member invocation 136 14.5 Primary expressions. 137 14.5.1 Literals 138 14.5.2 Simple names138 14.5.3 Parenthesized expressions.139 14.5.4 Member access140 14.5.5 Invocation expressio
26、ns141 14.5.6 Element access143 14.5.7 This access 144 14.5.8 Base access .145 14.5.9 Postfix increment and decrement operators145 14.5.10 The new operator146 14.5.11 The typeof operator.150 14.5.12 The checked and unchecked operators .151 14.6 Unary expressions . 153 14.6.1 Unary plus operator.153 1
27、4.6.2 Unary minus operator .154 14.6.3 Logical negation operator .154 14.6.4 Bitwise complement operator .154 14.6.5 Prefix increment and decrement operators155 14.6.6 Cast expressions155 14.7 Arithmetic operators 156 14.7.1 Multiplication operator .156 14.7.2 Division operator 157 14.7.3 Remainder
28、operator.158 14.7.4 Addition operator159 14.7.5 Subtraction operator161 14.8 Shift operators . 162 14.9 Relational and type-testing operators 163 14.9.1 Integer comparison operators164 14.9.2 Floating-point comparison operators 165 14.9.3 Decimal comparison operators .165 14.9.4 Boolean equality ope
29、rators .165 14.9.5 Enumeration comparison operators 166 14.9.6 Reference type equality operators.166 14.9.7 String equality operators.167 14.9.8 Delegate equality operators.167 14.9.9 The is operator 168 14.9.10 The as operator 168 14.10 Logical operators . 169 14.10.1 Integer logical operators .169
30、 14.10.2 Enumeration logical operators 169 14.10.3 Boolean logical operators .170 14.11 Conditional logical operators. 170 14.11.1 Boolean conditional logical operators.170 14.11.2 User-defined conditional logical operators.171 14.12 Conditional operator 171 14.13 Assignment operators 172 ISO/IEC 23
31、270:2003(E) ISO/IEC 2003 All rights reserved vii 14.13.1 Simple assignment 172 14.13.2 Compound assignment174 14.13.3 Event assignment 175 14.14 Expression . 175 14.15 Constant expressions . 175 14.16 Boolean expressions 176 15. Statements 177 15.1 End points and reachability . 177 15.2 Blocks 179 1
32、5.2.1 Statement lists .179 15.3 The empty statement 179 15.4 Labeled statements 180 15.5 Declaration statements. 180 15.5.1 Local variable declarations .180 15.5.2 Local constant declarations.181 15.6 Expression statements . 182 15.7 Selection statements 182 15.7.1 The if statement 182 15.7.2 The sw
33、itch statement.183 15.8 Iteration statements 186 15.8.1 The while statement.186 15.8.2 The do statement 187 15.8.3 The for statement187 15.8.4 The foreach statement 188 15.9 Jump statements. 190 15.9.1 The break statement.191 15.9.2 The continue statement192 15.9.3 The goto statement .192 15.9.4 The
34、 return statement.193 15.9.5 The throw statement.194 15.10 The try statement 195 15.11 The checked and unchecked statements 197 15.12 The lock statement 198 15.13 The using statement 198 16. Namespaces 201 16.1 Compilation units 201 16.2 Namespace declarations 201 16.3 Using directives . 202 16.3.1
35、Using alias directives 203 16.3.2 Using namespace directives205 16.4 Namespace members . 207 16.5 Type declarations. 207 17. Classes 209 17.1 Class declarations 209 17.1.1 Class modifiers .209 17.1.2 Class base specification 210 17.1.3 Class body.211 17.2 Class members. 212 17.2.1 Inheritance 213 17
36、.2.2 The new modifier .213 17.2.3 Access modifiers.213 17.2.4 Constituent types.214 17.2.5 Static and instance members.214 ISO/IEC 23270:2003(E) viii ISO/IEC 2003 All rights reserved 17.2.6 Nested types215 17.2.7 Reserved member names 217 17.3 Constants . 219 17.4 Fields . 220 17.4.1 Static and inst
37、ance fields.221 17.4.2 Readonly fields .222 17.4.3 Volatile fields223 17.4.4 Field initialization .224 17.4.5 Variable initializers.224 17.5 Methods . 227 17.5.1 Method parameters .228 17.5.2 Static and instance methods 233 17.5.3 Virtual methods.233 17.5.4 Override methods235 17.5.5 Sealed methods
38、.236 17.5.6 Abstract methods 237 17.5.7 External methods 238 17.5.8 Method body .239 17.5.9 Method overloading239 17.6 Properties. 239 17.6.1 Static and instance properties240 17.6.2 Accessors 240 17.6.3 Virtual, sealed, override, and abstract accessors.245 17.7 Events 246 17.7.1 Field-like events24
39、8 17.7.2 Event accessors .249 17.7.3 Static and instance events .250 17.7.4 Virtual, sealed, override, and abstract accessors.250 17.8 Indexers . 251 17.8.1 Indexer overloading 254 17.9 Operators . 254 17.9.1 Unary operators.255 17.9.2 Binary operators256 17.9.3 Conversion operators 256 17.10 Instan
40、ce constructors . 258 17.10.1 Constructor initializers259 17.10.2 Instance variable initializers .259 17.10.3 Constructor execution .259 17.10.4 Default constructors261 17.10.5 Private constructors.262 17.10.6 Optional instance constructor parameters .262 17.11 Static constructors . 262 17.12 Destru
41、ctors. 264 18. Structs 267 18.1 Struct declarations . 267 18.1.1 Struct modifiers.267 18.1.2 Struct interfaces 267 18.1.3 Struct body268 18.2 Struct members 268 18.3 Class and struct differences . 268 18.3.1 Value semantics 268 18.3.2 Inheritance 269 18.3.3 Assignment .269 18.3.4 Default values .269
42、 ISO/IEC 23270:2003(E) ISO/IEC 2003 All rights reserved ix 18.3.5 Boxing and unboxing270 18.3.6 Meaning of this.270 18.3.7 Field initializers 270 18.3.8 Constructors 270 18.3.9 Destructors 271 18.3.10 Static constructors.271 18.4 Struct examples . 271 18.4.1 Database integer type272 18.4.2 Database
43、boolean type 273 19. Arrays. 275 19.1 Array types 275 19.1.1 The System.Array type.276 19.2 Array creation 276 19.3 Array element access. 276 19.4 Array members 276 19.5 Array covariance . 276 19.6 Array initializers 277 20. Interfaces 279 20.1 Interface declarations. 279 20.1.1 Interface modifiers2
44、79 20.1.2 Base interfaces 279 20.1.3 Interface body .280 20.2 Interface members . 280 20.2.1 Interface methods281 20.2.2 Interface properties .281 20.2.3 Interface events .282 20.2.4 Interface indexers282 20.2.5 Interface member access.282 20.3 Fully qualified interface member names . 283 20.4 Inter
45、face implementations . 284 20.4.1 Explicit interface member implementations .285 20.4.2 Interface mapping .286 20.4.3 Interface implementation inheritance289 20.4.4 Interface re-implementation290 20.4.5 Abstract classes and interfaces291 21. Enums. 293 21.1 Enum declarations . 293 21.2 Enum modifier
46、s . 293 21.3 Enum members 294 21.4 Enum values and operations 296 22. Delegates. 297 22.1 Delegate declarations. 297 22.2 Delegate instantiation 299 22.3 Delegate invocation . 299 23. Exceptions 303 23.1 Causes of exceptions . 303 23.2 The System.Exception class. 303 23.3 How exceptions are handled
47、303 23.4 Common Exception Classes 304 24. Attributes . 305 ISO/IEC 23270:2003(E) x ISO/IEC 2003 All rights reserved 24.1 Attribute classes. 305 24.1.1 Attribute usage305 24.1.2 Positional and named parameters306 24.1.3 Attribute parameter types307 24.2 Attribute specification . 307 24.3 Attribute in
48、stances . 311 24.3.1 Compilation of an attribute .311 24.3.2 Run-time retrieval of an attribute instance311 24.4 Reserved attributes 312 24.4.1 The AttributeUsage attribute .312 24.4.2 The Conditional attribute.312 24.4.3 The Obsolete attribute314 25. Unsafe code 317 25.1 Unsafe contexts . 317 25.2
49、Pointer types 319 25.3 Fixed and moveable variables . 322 25.4 Pointer conversions . 322 25.5 Pointers in expressions 323 25.5.1 Pointer indirection.324 25.5.2 Pointer member access324 25.5.3 Pointer element access 325 25.5.4 The address-of operator 325 25.5.5 Pointer increment and decrement326 25.5.6 Pointer arithmetic326 25.5.7 Pointer comparison .327 25.5.8 The sizeof operator.327 25.6 The fixed statement 328 25.7 Stack allocation . 331 25.8 Dynamic memory allocation . 332 A. Grammar. 335 A.1 Lexical grammar. 335 A.1.1 Line terminators .335 A.
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1