ISO/IEC 23270:2003
(Main)Information technology — C# Language Specification
Information technology — C# Language Specification
ISO/IEC 23270:2003 specifies the form and establishes the interpretation of programs written in the C# programming language. It specifies: the representation of C# programs; the syntax and constraints of the C# language; the semantic rules for interpreting C# programs; the restrictions and limits imposed by a conforming implementation of C#. ISO/IEC 23270:2003 does not specify: the mechanism by which C# programs are transformed for use by a data-processing system; the mechanism by which C# applications are invoked for use by a data-processing system; the mechanism by which input data are transformed for use by a C# application; the mechanism by which output data are transformed after being produced by a C# application; the size or complexity of a program and its data that will exceed the capacity of any specific data-processing system or the capacity of a particular processor; all minimal requirements of a data-processing system that is capable of supporting a conforming implementation.
Technologies de l'information — Spécification du langage C#
General Information
Relations
Standards Content (Sample)
INTERNATIONAL ISO/IEC
STANDARD 23270
First edition
2003-04-01
Information technology — C# Language
Specification
Technologies de l'information — Spécification du langage C#
Reference number
ISO/IEC 23270:2003(E)
©
ISO/IEC 2003
---------------------- Page: 1 ----------------------
ISO/IEC 23270:2003(E)
PDF disclaimer
This PDF file may contain embedded typefaces. In accordance with Adobe'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 Adobe's licensing policy. 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 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 may 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
ISO's member body in the country of the requester.
ISO copyright office
Case postale 56 • CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.org
Web www.iso.org
Published in Switzerland
ii © ISO/IEC 2003 – All rights reserved
---------------------- Page: 2 ----------------------
ISO/IEC 23270:2003(E)
Table of Contents
1. Scope. 1
2. Conformance . 3
3. References . 5
4. Definitions . 7
5. Notational conventions. 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 types.17
8.2.2 Conversions .19
8.2.3 Array types.20
8.2.4 Type system unification.21
8.3 Variables and parameters. 22
8.4 Automatic memory management. 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 Events.36
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
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 terminators.52
9.3.2 Comments .53
©ISO/IEC 2003 – All rights reserved iii
---------------------- Page: 3 ----------------------
ISO/IEC 23270:2003(E)
9.3.3 White space.54
9.4 Tokens . 54
9.4.1 Unicode escape sequences .54
9.4.2 Identifiers.55
9.4.3 Keywords.56
9.4.4 Literals .57
9.4.5 Operators and punctuators .62
9.5 Pre-processing directives. 62
9.5.1 Conditional compilation symbols .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. 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.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 hiding.81
10.8 Namespace and type names. 83
10.8.1 Fully qualified names.84
10.9 Automatic memory management. 85
10.10 Execution order . 87
11. Types . 89
11.1 Value types . 89
11.1.1 Default constructors.90
11.1.2 Struct types .90
11.1.3 Simple types.91
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 type.94
11.1.8 Enumeration types .94
11.2 Reference types . 94
11.2.1 Class types .95
11.2.2 The object type.95
11.2.3 The string type.95
iv ©ISO/IEC 2003 – All rights reserved
---------------------- Page: 4 ----------------------
ISO/IEC 23270:2003(E)
11.2.4 Interface types.96
11.2.5 Array types.96
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 Static variables.99
12.1.2 Instance variables.99
12.1.3 Array elements.100
12.1.4 Value parameters .100
12.1.5 Reference parameters.100
12.1.6 Output parameters.100
12.1.7 Local variables.101
12.2 Default values. 101
12.3 Definite assignment . 102
12.3.1 Initially assigned variables.102
12.3.2 Initially unassigned variables.103
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 conversions.113
13.1.3 Implicit enumeration conversions.114
13.1.4 Implicit reference conversions.114
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 conversions.115
13.2.2 Explicit enumeration conversions.117
13.2.3 Explicit reference conversions.117
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 conversions.118
13.4.2 Evaluation of user-defined conversions.119
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 associativity.124
14.2.2 Operator overloading .125
14.2.3 Unary operator overload resolution .126
14.2.4 Binary operator overload resolution .127
©ISO/IEC 2003 – All rights reserved v
---------------------- Page: 5 ----------------------
ISO/IEC 23270:2003(E)
14.2.5 Candidate user-defined operators .127
14.2.6 Numeric promotions .127
14.3 Member lookup . 129
14.3.1 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 names.138
14.5.3 Parenthesized expressions.139
14.5.4 Member access.140
14.5.5 Invocation expressions.141
14.5.6 Element access.143
14.5.7 This access .144
14.5.8 Base access .145
14.5.9 Postfix increment and decrement operators.145
14.5.10 The new operator.146
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
14.6.2 Unary minus operator .154
14.6.3 Logical negation operator .154
14.6.4 Bitwise complement operator .
...
Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.