BS ISO/IEC 23270:2018
$215.11
Information technology. Programming languages. C#
Published By | Publication Date | Number of Pages |
BSI | 2018 | 536 |
This specification describes the form and establishes the interpretation of programs written in the C# programming language. It describes
-
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#.
This specification does not describe
-
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.
PDF Catalog
PDF Pages | PDF Title |
---|---|
2 | undefined |
5 | Table of Contents |
22 | Blank Page |
23 | Introduction |
25 | 1. Scope |
27 | 2. Normative references |
29 | 3. Terms and definitions |
31 | 4. Acronyms and abbreviations |
33 | 5. General description |
35 | 6. Conformance |
37 | 7. Lexical structure 7.1 Programs 7.2 Grammars 7.2.1 General 7.2.2 Grammar notation |
38 | 7.2.3 Lexical grammar |
39 | 7.2.4 Syntactic grammar 7.2.5 Grammar ambiguities |
40 | 7.3 Lexical analysis 7.3.1 General 7.3.2 Line terminators |
41 | 7.3.3 Comments |
42 | 7.3.4 White space |
43 | 7.4 Tokens 7.4.1 General 7.4.2 Unicode character escape sequences |
44 | 7.4.3 Identifiers |
45 | 7.4.4 Keywords |
46 | 7.4.5 Literals 7.4.5.1 General |
47 | 7.4.5.2 Boolean literals 7.4.5.3 Integer literals |
48 | 7.4.5.4 Real literals |
49 | 7.4.5.5 Character literals |
50 | 7.4.5.6 String literals |
52 | 7.4.5.7 The null literal 7.4.6 Operators and punctuators 7.5 Pre-processing directives 7.5.1 General |
54 | 7.5.2 Conditional compilation symbols 7.5.3 Pre-processing expressions |
55 | 7.5.4 Definition directives |
56 | 7.5.5 Conditional compilation directives |
58 | 7.5.6 Diagnostic directives |
59 | 7.5.7 Region directives 7.5.8 Line directives |
60 | 7.5.9 Pragma directives |
61 | 8. Basic concepts 8.1 Application startup |
62 | 8.2 Application termination 8.3 Declarations |
65 | 8.4 Members 8.4.1 General 8.4.2 Namespace members 8.4.3 Struct members |
66 | 8.4.4 Enumeration members 8.4.5 Class members 8.4.6 Interface members 8.4.7 Array members 8.4.8 Delegate members 8.5 Member access 8.5.1 General 8.5.2 Declared accessibility |
67 | 8.5.3 Accessibility domains |
70 | 8.5.4 Protected access |
71 | 8.5.5 Accessibility constraints |
72 | 8.6 Signatures and overloading |
73 | 8.7 Scopes 8.7.1 General |
76 | 8.7.2 Name hiding 8.7.2.1 General 8.7.2.2 Hiding through nesting |
77 | 8.7.2.3 Hiding through inheritance |
78 | 8.8 Namespace and type names 8.8.1 General |
80 | 8.8.2 Unqualified names 8.8.3 Fully qualified names |
81 | 8.9 Automatic memory management |
83 | 8.10 Execution order |
85 | 9. Types 9.1 General 9.2 Reference types 9.2.1 General |
86 | 9.2.2 Class types 9.2.3 The object type |
87 | 9.2.4 The dynamic type 9.2.5 The string type 9.2.6 Interface types 9.2.7 Array types 9.2.8 Delegate types 9.3 Value types 9.3.1 General |
88 | 9.3.2 The System.ValueType type 9.3.3 Default constructors |
89 | 9.3.4 Struct types 9.3.5 Simple types |
90 | 9.3.6 Integral types |
91 | 9.3.7 Floating-point types |
92 | 9.3.8 The decimal type |
93 | 9.3.9 The bool type 9.3.10 Enumeration types 9.3.11 Nullable value types |
94 | 9.3.12 Boxing and unboxing 9.4 Constructed types 9.4.1 General |
95 | 9.4.2 Type arguments 9.4.3 Open and closed types |
96 | 9.4.4 Bound and unbound types 9.4.5 Satisfying constraints |
97 | 9.5 Type parameters 9.6 Expression tree types |
98 | 9.7 The dynamic type |
101 | 10. Variables 10.1 General 10.2 Variable categories 10.2.1 General 10.2.2 Static variables 10.2.3 Instance variables 10.2.3.1 General |
102 | 10.2.3.2 Instance variables in classes 10.2.3.3 Instance variables in structs 10.2.4 Array elements 10.2.5 Value parameters 10.2.6 Reference parameters |
103 | 10.2.7 Output parameters 10.2.8 Local variables |
104 | 10.3 Default values 10.4 Definite assignment 10.4.1 General |
105 | 10.4.2 Initially assigned variables 10.4.3 Initially unassigned variables 10.4.4 Precise rules for determining definite assignment 10.4.4.1 General |
106 | 10.4.4.2 General rules for statements 10.4.4.3 Block statements, checked, and unchecked statements 10.4.4.4 Expression statements |
107 | 10.4.4.5 Declaration statements 10.4.4.6 If statements 10.4.4.7 Switch statements 10.4.4.8 While statements 10.4.4.9 Do statements |
108 | 10.4.4.10 For statements 10.4.4.11 Break, continue, and goto statements 10.4.4.12 Throw statements 10.4.4.13 Return statements |
109 | 10.4.4.14 Try-catch statements 10.4.4.15 Try-finally statements 10.4.4.16 Try-catch-finally statements |
110 | 10.4.4.17 Foreach statements 10.4.4.18 Using statements |
111 | 10.4.4.19 Lock statements 10.4.4.20 Yield statements 10.4.4.21 General rules for constant expressions |
112 | 10.4.4.22 General rules for simple expressions 10.4.4.23 General rules for expressions with embedded expressions 10.4.4.24 Invocation expressions and object creation expressions |
113 | 10.4.4.25 Simple assignment expressions 10.4.4.26 && expressions |
114 | 10.4.4.27 || expressions |
115 | 10.4.4.28 ! expressions 10.4.4.29 ?? expressions 10.4.4.30 ?: expressions |
116 | 10.4.4.31 Anonymous functions 10.5 Variable references 10.6 Atomicity of variable references |
117 | 11. Conversions 11.1 General 11.2 Implicit conversions 11.2.1 General |
118 | 11.2.2 Identity conversion 11.2.3 Implicit numeric conversions 11.2.4 Implicit enumeration conversions 11.2.5 Implicit nullable conversions 11.2.6 Null literal conversions |
119 | 11.2.7 Implicit reference conversions 11.2.8 Boxing conversions |
121 | 11.2.9 Implicit dynamic conversions 11.2.10 Implicit constant expression conversions 11.2.11 Implicit conversions involving type parameters |
122 | 11.2.12 User-defined implicit conversions 11.2.13 Anonymous function conversions and method group conversions 11.3 Explicit conversions 11.3.1 General |
123 | 11.3.2 Explicit numeric conversions |
125 | 11.3.3 Explicit enumeration conversions 11.3.4 Explicit nullable conversions 11.3.5 Explicit reference conversions |
126 | 11.3.6 Unboxing conversions |
127 | 11.3.7 Explicit dynamic conversions 11.3.8 Explicit conversions involving type parameters |
129 | 11.3.9 User-defined explicit conversions 11.4 Standard conversions 11.4.1 General 11.4.2 Standard implicit conversions 11.4.3 Standard explicit conversions 11.5 User-defined conversions 11.5.1 General 11.5.2 Permitted user-defined conversions |
130 | 11.5.3 Evaluation of user-defined conversions |
131 | 11.5.4 User-defined implicit conversions 11.5.5 User-defined explicit conversions |
133 | 11.6 Conversions involving nullable types 11.6.1 Nullable Conversions 11.6.2 Lifted conversions 11.7 Anonymous function conversions 11.7.1 General |
135 | 11.7.2 Evaluation of anonymous function conversions to delegate types |
136 | 11.7.3 Evaluation of anonymous function conversions to expression tree types 11.8 Method group conversions |
139 | 12. Expressions 12.1 General 12.2 Expression classifications 12.2.1 General |
140 | 12.2.2 Values of expressions 12.3 Static and Dynamic Binding 12.3.1 General |
141 | 12.3.2 Binding-time 12.3.3 Dynamic binding |
142 | 12.3.4 Types of subexpressions 12.4 Operators 12.4.1 General 12.4.2 Operator precedence and associativity |
143 | 12.4.3 Operator overloading |
145 | 12.4.4 Unary operator overload resolution 12.4.5 Binary operator overload resolution 12.4.6 Candidate user-defined operators |
146 | 12.4.7 Numeric promotions 12.4.7.1 General 12.4.7.2 Unary numeric promotions 12.4.7.3 Binary numeric promotions |
147 | 12.4.8 Lifted operators |
148 | 12.5 Member lookup 12.5.1 General |
149 | 12.5.2 Base types |
150 | 12.6 Function members 12.6.1 General |
152 | 12.6.2 Argument lists 12.6.2.1 General |
153 | 12.6.2.2 Corresponding parameters |
154 | 12.6.2.3 Run-time evaluation of argument lists |
155 | 12.6.3 Type inference 12.6.3.1 General |
156 | 12.6.3.2 The first phase |
157 | 12.6.3.3 The second phase 12.6.3.4 Input types 12.6.3.5 Output types 12.6.3.6 Dependence 12.6.3.7 Output type inferences |
158 | 12.6.3.8 Explicit parameter type inferences 12.6.3.9 Exact inferences 12.6.3.10 Lower-bound inferences 12.6.3.11 Upper-bound inferences |
159 | 12.6.3.12 Fixing 12.6.3.13 Inferred return type |
161 | 12.6.3.14 Type inference for conversion of method groups 12.6.3.15 Finding the best common type of a set of expressions 12.6.4 Overload resolution 12.6.4.1 General |
162 | 12.6.4.2 Applicable function member |
163 | 12.6.4.3 Better function member |
164 | 12.6.4.4 Better conversion from expression 12.6.4.5 Better conversion from type 12.6.4.6 Better conversion target 12.6.4.7 Overloading in generic classes |
165 | 12.6.5 Compile-time checking of dynamic member invocation |
166 | 12.6.6 Function member invocation 12.6.6.1 General |
167 | 12.6.6.2 Invocations on boxed instances 12.7 Primary expressions 12.7.1 General |
168 | 12.7.2 Literals 12.7.3 Simple names 12.7.3.1 General |
170 | 12.7.3.2 Invariant meaning in blocks 12.7.4 Parenthesized expressions |
171 | 12.7.5 Member access 12.7.5.1 General |
173 | 12.7.5.2 Identical simple names and type names 12.7.6 Invocation expressions 12.7.6.1 General |
174 | 12.7.6.2 Method invocations |
175 | 12.7.6.3 Extension method invocations |
177 | 12.7.6.4 Delegate invocations |
178 | 12.7.7 Element access 12.7.7.1 General 12.7.7.2 Array access |
179 | 12.7.7.3 Indexer access |
180 | 12.7.8 This access 12.7.9 Base access |
181 | 12.7.10 Postfix increment and decrement operators |
182 | 12.7.11 The new operator 12.7.11.1 General 12.7.11.2 Object creation expressions |
184 | 12.7.11.3 Object initializers |
186 | 12.7.11.4 Collection initializers |
187 | 12.7.11.5 Array creation expressions |
189 | 12.7.11.6 Delegate creation expressions |
190 | 12.7.11.7 Anonymous object creation expressions |
192 | 12.7.12 The typeof operator |
193 | 12.7.13 The sizeof operator |
194 | 12.7.14 The checked and unchecked operators |
196 | 12.7.15 Default value expressions |
197 | 12.7.16 Anonymous method expressions 12.8 Unary operators 12.8.1 General 12.8.2 Unary plus operator 12.8.3 Unary minus operator |
198 | 12.8.4 Logical negation operator 12.8.5 Bitwise complement operator |
199 | 12.8.6 Prefix increment and decrement operators |
200 | 12.8.7 Cast expressions 12.8.8 Await expressions 12.8.8.1 General |
201 | 12.8.8.2 Awaitable expressions 12.8.8.3 Classification of await expressions 12.8.8.4 Run-time evaluation of await expressions |
202 | 12.9 Arithmetic operators 12.9.1 General 12.9.2 Multiplication operator |
203 | 12.9.3 Division operator |
204 | 12.9.4 Remainder operator |
205 | 12.9.5 Addition operator |
207 | 12.9.6 Subtraction operator |
209 | 12.10 Shift operators |
210 | 12.11 Relational and type-testing operators 12.11.1 General |
211 | 12.11.2 Integer comparison operators |
212 | 12.11.3 Floating-point comparison operators 12.11.4 Decimal comparison operators |
213 | 12.11.5 Boolean equality operators 12.11.6 Enumeration comparison operators 12.11.7 Reference type equality operators |
215 | 12.11.8 String equality operators 12.11.9 Delegate equality operators |
216 | 12.11.10 Equality operators between nullable value types and the null literal 12.11.11 The is operator |
217 | 12.11.12 The as operator |
218 | 12.12 Logical operators 12.12.1 General 12.12.2 Integer logical operators |
219 | 12.12.3 Enumeration logical operators 12.12.4 Boolean logical operators 12.12.5 Nullable Boolean & and | operators |
220 | 12.13 Conditional logical operators 12.13.1 General |
221 | 12.13.2 Boolean conditional logical operators 12.13.3 User-defined conditional logical operators |
222 | 12.14 The null coalescing operator 12.15 Conditional operator |
223 | 12.16 Anonymous function expressions 12.16.1 General |
225 | 12.16.2 Anonymous function signatures 12.16.3 Anonymous function bodies |
226 | 12.16.4 Overload resolution |
227 | 12.16.5 Anonymous functions and dynamic binding 12.16.6 Outer variables 12.16.6.1 General 12.16.6.2 Captured outer variables |
228 | 12.16.6.3 Instantiation of local variables |
230 | 12.16.7 Evaluation of anonymous function expressions 12.16.8 Implementation Exmple |
233 | 12.17 Query expressions 12.17.1 General |
234 | 12.17.2 Ambiguities in query expressions 12.17.3 Query expression translation 12.17.3.1 General |
235 | 12.17.3.2 select and group … by clauses with continuations 12.17.3.3 Explicit range variable types |
236 | 12.17.3.4 Degenerate query expressions 12.17.3.5 From, let, where, join and orderby clauses |
240 | 12.17.3.6 Select clauses 12.17.3.7 Group clauses 12.17.3.8 Transparent identifiers |
242 | 12.17.4 The query-expression pattern |
243 | 12.18 Assignment operators 12.18.1 General |
244 | 12.18.2 Simple assignment |
246 | 12.18.3 Compound assignment |
247 | 12.18.4 Event assignment 12.19 Expression 12.20 Constant expressions |
249 | 12.21 Boolean expressions |
251 | 13. Statements 13.1 General 13.2 End points and reachability |
253 | 13.3 Blocks 13.3.1 General 13.3.2 Statement lists |
254 | 13.4 The empty statement 13.5 Labeled statements |
255 | 13.6 Declaration statements 13.6.1 General 13.6.2 Local variable declarations |
257 | 13.6.3 Local constant declarations 13.7 Expression statements |
258 | 13.8 Selection statements 13.8.1 General 13.8.2 The if statement 13.8.3 The switch statement |
262 | 13.9 Iteration statements 13.9.1 General 13.9.2 The while statement |
263 | 13.9.3 The do statement 13.9.4 The for statement |
264 | 13.9.5 The foreach statement |
267 | 13.10 Jump statements 13.10.1 General |
268 | 13.10.2 The break statement |
269 | 13.10.3 The continue statement 13.10.4 The goto statement |
270 | 13.10.5 The return statement |
271 | 13.10.6 The throw statement |
272 | 13.11 The try statement |
275 | 13.12 The checked and unchecked statements 13.13 The lock statement |
276 | 13.14 The using statement |
278 | 13.15 The yield statement |
281 | 14. Namespaces 14.1 General 14.2 Compilation units 14.3 Namespace declarations |
283 | 14.4 Extern alias directives 14.5 Using directives 14.5.1 General |
284 | 14.5.2 Using alias directives |
288 | 14.5.3 Using namespace directives |
289 | 14.6 Namespace member declarations |
290 | 14.7 Type declarations 14.8 Qualified alias member 14.8.1 General |
292 | 14.8.2 Uniqueness of aliases |
293 | 15. Classes 15.1 General 15.2 Class declarations 15.2.1 General 15.2.2 Class modifiers 15.2.2.1 General |
294 | 15.2.2.2 Abstract classes 15.2.2.3 Sealed classes |
295 | 15.2.2.4 Static classes 15.2.2.4.1 General 15.2.2.4.2 Referencing static class types |
296 | 15.2.3 Type parameters 15.2.4 Class base specification 15.2.4.1 General 15.2.4.2 Base classes |
298 | 15.2.4.3 Interface implementations |
299 | 15.2.5 Type parameter constraints |
304 | 15.2.6 Class body 15.2.7 Partial declarations |
305 | 15.3 Class members 15.3.1 General |
307 | 15.3.2 The instance type 15.3.3 Members of constructed types |
308 | 15.3.4 Inheritance |
309 | 15.3.5 The new modifier 15.3.6 Access modifiers |
310 | 15.3.7 Constituent types 15.3.8 Static and instance members |
311 | 15.3.9 Nested types 15.3.9.1 General 15.3.9.2 Fully qualified name 15.3.9.3 Declared accessibility |
312 | 15.3.9.4 Hiding 15.3.9.5 this access |
313 | 15.3.9.6 Access to private and protected members of the containing type |
314 | 15.3.9.7 Nested types in generic classes |
315 | 15.3.10 Reserved member names 15.3.10.1 General 15.3.10.2 Member names reserved for properties |
316 | 15.3.10.3 Member names reserved for events 15.3.10.4 Member names reserved for indexers 15.3.10.5 Member names reserved for finalizers 15.4 Constants |
318 | 15.5 Fields 15.5.1 General |
319 | 15.5.2 Static and instance fields 15.5.3 Readonly fields 15.5.3.1 General |
320 | 15.5.3.2 Using static readonly fields for constants 15.5.3.3 Versioning of constants and static readonly fields |
321 | 15.5.4 Volatile fields |
322 | 15.5.5 Field initialization 15.5.6 Variable initializers 15.5.6.1 General |
323 | 15.5.6.2 Static field initialization |
324 | 15.5.6.3 Instance field initialization |
325 | 15.6 Methods 15.6.1 General |
327 | 15.6.2 Method parameters 15.6.2.1 General |
328 | 15.6.2.2 Value parameters |
329 | 15.6.2.3 Reference parameters 15.6.2.4 Output parameters |
330 | 15.6.2.5 Parameter arrays |
333 | 15.6.3 Static and instance methods 15.6.4 Virtual methods |
335 | 15.6.5 Override methods |
337 | 15.6.6 Sealed methods |
338 | 15.6.7 Abstract methods |
339 | 15.6.8 External methods 15.6.9 Partial methods |
342 | 15.6.10 Extension methods |
343 | 15.6.11 Method body 15.7 Properties 15.7.1 General |
345 | 15.7.2 Static and instance properties 15.7.3 Accessors |
350 | 15.7.4 Automatically implemented properties 15.7.5 Accessibility |
352 | 15.7.6 Virtual, sealed, override, and abstract accessors |
353 | 15.8 Events 15.8.1 General |
355 | 15.8.2 Field-like events |
356 | 15.8.3 Event accessors |
357 | 15.8.4 Static and instance events |
358 | 15.8.5 Virtual, sealed, override, and abstract accessors 15.9 Indexers |
362 | 15.10 Operators 15.10.1 General |
363 | 15.10.2 Unary operators |
364 | 15.10.3 Binary operators 15.10.4 Conversion operators |
367 | 15.11 Instance constructors 15.11.1 General |
368 | 15.11.2 Constructor initializers 15.11.3 Instance variable initializers |
369 | 15.11.4 Constructor execution |
370 | 15.11.5 Default constructors |
371 | 15.12 Static constructors |
373 | 15.13 Finalizers |
375 | 15.14 Iterators 15.14.1 General 15.14.2 Enumerator interfaces 15.14.3 Enumerable interfaces 15.14.4 Yield type 15.14.5 Enumerator objects 15.14.5.1 General |
376 | 15.14.5.2 The MoveNext method |
377 | 15.14.5.3 The Current property 15.14.5.4 The Dispose method |
378 | 15.14.6 Enumerable objects 15.14.6.1 General 15.14.6.2 The GetEnumerator method 15.15 Async Functions 15.15.1 General |
379 | 15.15.2 Evaluation of a task-returning async function 15.15.3 Evaluation of a void-returning async function |
381 | 16. Structs 16.1 General 16.2 Struct declarations 16.2.1 General 16.2.2 Struct modifiers |
382 | 16.2.3 Partial modifier 16.2.4 Struct interfaces 16.2.5 Struct body 16.3 Struct members 16.4 Class and struct differences 16.4.1 General |
383 | 16.4.2 Value semantics |
384 | 16.4.3 Inheritance 16.4.4 Assignment 16.4.5 Default values |
385 | 16.4.6 Boxing and unboxing 16.4.7 Meaning of this |
386 | 16.4.8 Field initializers |
387 | 16.4.9 Constructors |
388 | 16.4.10 Static constructors 16.4.11 Automatically implemented properties |
389 | 17. Arrays 17.1 General 17.2 Array types 17.2.1 General 17.2.2 The System.Array type |
390 | 17.2.3 Arrays and the generic collection interfaces |
391 | 17.3 Array creation 17.4 Array element access 17.5 Array members 17.6 Array covariance |
392 | 17.7 Array initializers |
395 | 18. Interfaces 18.1 General 18.2 Interface declarations 18.2.1 General 18.2.2 Interface modifiers |
396 | 18.2.3 Variant type parameter lists 18.2.3.1 General 18.2.3.2 Variance safety |
397 | 18.2.3.3 Variance conversion 18.2.4 Base interfaces |
398 | 18.3 Interface body 18.4 Interface members 18.4.1 General |
399 | 18.4.2 Interface methods |
400 | 18.4.3 Interface properties 18.4.4 Interface events 18.4.5 Interface indexers |
401 | 18.4.6 Interface member access |
402 | 18.5 Qualified interface member names |
403 | 18.6 Interface implementations 18.6.1 General |
404 | 18.6.2 Explicit interface member implementations |
406 | 18.6.3 Uniqueness of implemented interfaces |
407 | 18.6.4 Implementation of generic methods |
408 | 18.6.5 Interface mapping |
411 | 18.6.6 Interface implementation inheritance |
412 | 18.6.7 Interface re-implementation |
413 | 18.6.8 Abstract classes and interfaces |
415 | 19. Enums 19.1 General 19.2 Enum declarations 19.3 Enum modifiers |
416 | 19.4 Enum members |
418 | 19.5 The System.Enum type 19.6 Enum values and operations |
419 | 20. Delegates 20.1 General 20.2 Delegate declarations |
420 | 20.3 Delegate members 20.4 Delegate compatibility |
422 | 20.5 Delegate instantiation |
423 | 20.6 Delegate invocation |
427 | 21. Exceptions 21.1 General 21.2 Causes of exceptions 21.3 The System.Exception class 21.4 How exceptions are handled |
428 | 21.5 Common exception classes |
429 | 22. Attributes 22.1 General 22.2 Attribute classes 22.2.1 General 22.2.2 Attribute usage |
431 | 22.2.3 Positional and named parameters 22.2.4 Attribute parameter types |
432 | 22.3 Attribute specification |
438 | 22.4 Attribute instances 22.4.1 General 22.4.2 Compilation of an attribute 22.4.3 Run-time retrieval of an attribute instance |
439 | 22.5 Reserved attributes 22.5.1 General 22.5.2 The AttributeUsage attribute |
440 | 22.5.3 The Conditional attribute 22.5.3.1 General 22.5.3.2 Conditional methods |
442 | 22.5.3.3 Conditional attribute classes |
443 | 22.5.4 The Obsolete attribute |
444 | 22.5.5 Caller-info attributes 22.5.5.1 General |
445 | 22.5.5.2 The CallerLineNumber attribute 22.5.5.3 The CallerFilePath attribute 22.5.5.4 The CallerMemberName attribute |
446 | 22.6 Attributes for interoperation |
447 | 23. Unsafe code 23.1 General 23.2 Unsafe contexts |
450 | 23.3 Pointer types |
452 | 23.4 Fixed and moveable variables |
453 | 23.5 Pointer conversions 23.5.1 General |
454 | 23.5.2 Pointer arrays |
455 | 23.6 Pointers in expressions 23.6.1 General 23.6.2 Pointer indirection |
456 | 23.6.3 Pointer member access |
457 | 23.6.4 Pointer element access 23.6.5 The address-of operator |
458 | 23.6.6 Pointer increment and decrement |
459 | 23.6.7 Pointer arithmetic 23.6.8 Pointer comparison |
460 | 23.6.9 The sizeof operator 23.7 The fixed statement |
463 | 23.8 Fixed-size buffers 23.8.1 General 23.8.2 Fixed-size buffer declarations |
464 | 23.8.3 Fixed-size buffers in expressions |
465 | 23.8.4 Definite assignment checking 23.9 Stack allocation |
467 | Annex A. Grammar A.1 General A.2 Lexical grammar |
468 | A.2.1 Comments A.2.2 Tokens |
470 | A.2.3 Keywords |
472 | A.2.4 Operators and punctuators A.2.5 Pre-processing directives |
474 | A.3 Syntactic grammar A.3.1 Basic concepts A.3.2 Types |
475 | A.3.3 Variables |
476 | A.3.4 Expressions |
482 | A.3.5 Statements |
485 | A.3.6 Namespaces |
486 | A.3.7 Classes |
493 | A.3.8 Structs A.3.9 Arrays A.3.10 Interfaces |
494 | A.3.11 Enums |
495 | A.3.12 Delegates A.3.13 Attributes |
496 | A.4 Grammar extensions for unsafe code |
501 | Annex B. Portability issues B.1 General B.2 Undefined behavior B.3 Implementation-defined behavior |
502 | B.4 Unspecified behavior B.5 Other Issues |
503 | Annex C. Standard library C.1 General C.2 Standard Library Types defined in ISO/IEC 23271 |
512 | C.3 Standard Library Types not defined in ISO/IEC 23271:2012 |
515 | Annex D. Documentation comments D.1 General D.2 Introduction |
516 | D.3 Recommended tags D.3.1 General |
517 | D.3.2 D.3.3 |
518 | D.3.4 D.3.5 |
519 | D.3.6 D.3.7 |
520 | D.3.8 |
521 | D.3.9 D.3.10 D.3.11 |
522 | D.3.12 D.3.13 |
523 | D.3.14 D.3.15 D.3.16 |
524 | D.3.17 D.3.18 D.3.19 |
525 | D.4 Processing the documentation file D.4.1 General D.4.2 ID string format |
526 | D.4.3 ID string examples |
530 | D.5 An example D.5.1 C# source code |
532 | D.5.2 Resulting XML |
535 | Bibliography |