Already a subscriber? 

MADCAD.com Free Trial
Sign up for a 3 day free trial to explore the MADCAD.com interface, PLUS access the
2009 International Building Code to see how it all works.
If you like to setup a quick demo, let us know at support@madcad.com
or +1 800.798.9296 and we will be happy to schedule a webinar for you.
Security check
Please login to your personal account to use this feature.
Please login to your authorized staff account to use this feature.
Are you sure you want to empty the cart?
BS ISO/IEC 23270:2018 Information technology. Programming languages. C#, 2018
- undefined
- Table of Contents
- Blank Page
- Introduction
- 1. Scope
- 2. Normative references
- 3. Terms and definitions
- 4. Acronyms and abbreviations
- 5. General description
- 6. Conformance
- 7. Lexical structure [Go to Page]
- 7.1 Programs
- 7.2 Grammars [Go to Page]
- 7.2.1 General
- 7.2.2 Grammar notation
- 7.2.3 Lexical grammar
- 7.2.4 Syntactic grammar
- 7.2.5 Grammar ambiguities
- 7.3 Lexical analysis [Go to Page]
- 7.3.1 General
- 7.3.2 Line terminators
- 7.3.3 Comments
- 7.3.4 White space
- 7.4 Tokens [Go to Page]
- 7.4.1 General
- 7.4.2 Unicode character escape sequences
- 7.4.3 Identifiers
- 7.4.4 Keywords
- 7.4.5 Literals [Go to Page]
- 7.4.5.1 General
- 7.4.5.2 Boolean literals
- 7.4.5.3 Integer literals
- 7.4.5.4 Real literals
- 7.4.5.5 Character literals
- 7.4.5.6 String literals
- 7.4.5.7 The null literal
- 7.4.6 Operators and punctuators
- 7.5 Pre-processing directives [Go to Page]
- 7.5.1 General
- 7.5.2 Conditional compilation symbols
- 7.5.3 Pre-processing expressions
- 7.5.4 Definition directives
- 7.5.5 Conditional compilation directives
- 7.5.6 Diagnostic directives
- 7.5.7 Region directives
- 7.5.8 Line directives
- 7.5.9 Pragma directives
- 8. Basic concepts [Go to Page]
- 8.1 Application startup
- 8.2 Application termination
- 8.3 Declarations
- 8.4 Members [Go to Page]
- 8.4.1 General
- 8.4.2 Namespace members
- 8.4.3 Struct members
- 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 [Go to Page]
- 8.5.1 General
- 8.5.2 Declared accessibility
- 8.5.3 Accessibility domains
- 8.5.4 Protected access
- 8.5.5 Accessibility constraints
- 8.6 Signatures and overloading
- 8.7 Scopes [Go to Page]
- 8.7.1 General
- 8.7.2 Name hiding [Go to Page]
- 8.7.2.1 General
- 8.7.2.2 Hiding through nesting
- 8.7.2.3 Hiding through inheritance
- 8.8 Namespace and type names [Go to Page]
- 8.8.1 General
- 8.8.2 Unqualified names
- 8.8.3 Fully qualified names
- 8.9 Automatic memory management
- 8.10 Execution order
- 9. Types [Go to Page]
- 9.1 General
- 9.2 Reference types [Go to Page]
- 9.2.1 General
- 9.2.2 Class types
- 9.2.3 The object type
- 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 [Go to Page]
- 9.3.1 General
- 9.3.2 The System.ValueType type
- 9.3.3 Default constructors
- 9.3.4 Struct types
- 9.3.5 Simple types
- 9.3.6 Integral types
- 9.3.7 Floating-point types
- 9.3.8 The decimal type
- 9.3.9 The bool type
- 9.3.10 Enumeration types
- 9.3.11 Nullable value types
- 9.3.12 Boxing and unboxing
- 9.4 Constructed types [Go to Page]
- 9.4.1 General
- 9.4.2 Type arguments
- 9.4.3 Open and closed types
- 9.4.4 Bound and unbound types
- 9.4.5 Satisfying constraints
- 9.5 Type parameters
- 9.6 Expression tree types
- 9.7 The dynamic type
- 10. Variables [Go to Page]
- 10.1 General
- 10.2 Variable categories [Go to Page]
- 10.2.1 General
- 10.2.2 Static variables
- 10.2.3 Instance variables [Go to Page]
- 10.2.3.1 General
- 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
- 10.2.7 Output parameters
- 10.2.8 Local variables
- 10.3 Default values
- 10.4 Definite assignment [Go to Page]
- 10.4.1 General
- 10.4.2 Initially assigned variables
- 10.4.3 Initially unassigned variables
- 10.4.4 Precise rules for determining definite assignment [Go to Page]
- 10.4.4.1 General
- 10.4.4.2 General rules for statements
- 10.4.4.3 Block statements, checked, and unchecked statements
- 10.4.4.4 Expression statements
- 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
- 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
- 10.4.4.14 Try-catch statements
- 10.4.4.15 Try-finally statements
- 10.4.4.16 Try-catch-finally statements
- 10.4.4.17 Foreach statements
- 10.4.4.18 Using statements
- 10.4.4.19 Lock statements
- 10.4.4.20 Yield statements
- 10.4.4.21 General rules for constant expressions
- 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
- 10.4.4.25 Simple assignment expressions
- 10.4.4.26 && expressions
- 10.4.4.27 || expressions
- 10.4.4.28 ! expressions
- 10.4.4.29 ?? expressions
- 10.4.4.30 ?: expressions
- 10.4.4.31 Anonymous functions
- 10.5 Variable references
- 10.6 Atomicity of variable references
- 11. Conversions [Go to Page]
- 11.1 General
- 11.2 Implicit conversions [Go to Page]
- 11.2.1 General
- 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
- 11.2.7 Implicit reference conversions
- 11.2.8 Boxing conversions
- 11.2.9 Implicit dynamic conversions
- 11.2.10 Implicit constant expression conversions
- 11.2.11 Implicit conversions involving type parameters
- 11.2.12 User-defined implicit conversions
- 11.2.13 Anonymous function conversions and method group conversions
- 11.3 Explicit conversions [Go to Page]
- 11.3.1 General
- 11.3.2 Explicit numeric conversions
- 11.3.3 Explicit enumeration conversions
- 11.3.4 Explicit nullable conversions
- 11.3.5 Explicit reference conversions
- 11.3.6 Unboxing conversions
- 11.3.7 Explicit dynamic conversions
- 11.3.8 Explicit conversions involving type parameters
- 11.3.9 User-defined explicit conversions
- 11.4 Standard conversions [Go to Page]
- 11.4.1 General
- 11.4.2 Standard implicit conversions
- 11.4.3 Standard explicit conversions
- 11.5 User-defined conversions [Go to Page]
- 11.5.1 General
- 11.5.2 Permitted user-defined conversions
- 11.5.3 Evaluation of user-defined conversions
- 11.5.4 User-defined implicit conversions
- 11.5.5 User-defined explicit conversions
- 11.6 Conversions involving nullable types [Go to Page]
- 11.6.1 Nullable Conversions
- 11.6.2 Lifted conversions
- 11.7 Anonymous function conversions [Go to Page]
- 11.7.1 General
- 11.7.2 Evaluation of anonymous function conversions to delegate types
- 11.7.3 Evaluation of anonymous function conversions to expression tree types
- 11.8 Method group conversions
- 12. Expressions [Go to Page]
- 12.1 General
- 12.2 Expression classifications [Go to Page]
- 12.2.1 General
- 12.2.2 Values of expressions
- 12.3 Static and Dynamic Binding [Go to Page]
- 12.3.1 General
- 12.3.2 Binding-time
- 12.3.3 Dynamic binding
- 12.3.4 Types of subexpressions
- 12.4 Operators [Go to Page]
- 12.4.1 General
- 12.4.2 Operator precedence and associativity
- 12.4.3 Operator overloading
- 12.4.4 Unary operator overload resolution
- 12.4.5 Binary operator overload resolution
- 12.4.6 Candidate user-defined operators
- 12.4.7 Numeric promotions [Go to Page]
- 12.4.7.1 General
- 12.4.7.2 Unary numeric promotions
- 12.4.7.3 Binary numeric promotions
- 12.4.8 Lifted operators
- 12.5 Member lookup [Go to Page]
- 12.5.1 General
- 12.5.2 Base types
- 12.6 Function members [Go to Page]
- 12.6.1 General
- 12.6.2 Argument lists [Go to Page]
- 12.6.2.1 General
- 12.6.2.2 Corresponding parameters
- 12.6.2.3 Run-time evaluation of argument lists
- 12.6.3 Type inference [Go to Page]
- 12.6.3.1 General
- 12.6.3.2 The first phase
- 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
- 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
- 12.6.3.12 Fixing
- 12.6.3.13 Inferred return type
- 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 [Go to Page]
- 12.6.4.1 General
- 12.6.4.2 Applicable function member
- 12.6.4.3 Better function member
- 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
- 12.6.5 Compile-time checking of dynamic member invocation
- 12.6.6 Function member invocation [Go to Page]
- 12.6.6.1 General
- 12.6.6.2 Invocations on boxed instances
- 12.7 Primary expressions [Go to Page]
- 12.7.1 General
- 12.7.2 Literals
- 12.7.3 Simple names [Go to Page]
- 12.7.3.1 General
- 12.7.3.2 Invariant meaning in blocks
- 12.7.4 Parenthesized expressions
- 12.7.5 Member access [Go to Page]
- 12.7.5.1 General
- 12.7.5.2 Identical simple names and type names
- 12.7.6 Invocation expressions [Go to Page]
- 12.7.6.1 General
- 12.7.6.2 Method invocations
- 12.7.6.3 Extension method invocations
- 12.7.6.4 Delegate invocations
- 12.7.7 Element access [Go to Page]
- 12.7.7.1 General
- 12.7.7.2 Array access
- 12.7.7.3 Indexer access
- 12.7.8 This access
- 12.7.9 Base access
- 12.7.10 Postfix increment and decrement operators
- 12.7.11 The new operator [Go to Page]
- 12.7.11.1 General
- 12.7.11.2 Object creation expressions
- 12.7.11.3 Object initializers
- 12.7.11.4 Collection initializers
- 12.7.11.5 Array creation expressions
- 12.7.11.6 Delegate creation expressions
- 12.7.11.7 Anonymous object creation expressions
- 12.7.12 The typeof operator
- 12.7.13 The sizeof operator
- 12.7.14 The checked and unchecked operators
- 12.7.15 Default value expressions
- 12.7.16 Anonymous method expressions
- 12.8 Unary operators [Go to Page]
- 12.8.1 General
- 12.8.2 Unary plus operator
- 12.8.3 Unary minus operator
- 12.8.4 Logical negation operator
- 12.8.5 Bitwise complement operator
- 12.8.6 Prefix increment and decrement operators
- 12.8.7 Cast expressions
- 12.8.8 Await expressions [Go to Page]
- 12.8.8.1 General
- 12.8.8.2 Awaitable expressions
- 12.8.8.3 Classification of await expressions
- 12.8.8.4 Run-time evaluation of await expressions
- 12.9 Arithmetic operators [Go to Page]
- 12.9.1 General
- 12.9.2 Multiplication operator
- 12.9.3 Division operator
- 12.9.4 Remainder operator
- 12.9.5 Addition operator
- 12.9.6 Subtraction operator
- 12.10 Shift operators
- 12.11 Relational and type-testing operators [Go to Page]
- 12.11.1 General
- 12.11.2 Integer comparison operators
- 12.11.3 Floating-point comparison operators
- 12.11.4 Decimal comparison operators
- 12.11.5 Boolean equality operators
- 12.11.6 Enumeration comparison operators
- 12.11.7 Reference type equality operators
- 12.11.8 String equality operators
- 12.11.9 Delegate equality operators
- 12.11.10 Equality operators between nullable value types and the null literal
- 12.11.11 The is operator
- 12.11.12 The as operator
- 12.12 Logical operators [Go to Page]
- 12.12.1 General
- 12.12.2 Integer logical operators
- 12.12.3 Enumeration logical operators
- 12.12.4 Boolean logical operators
- 12.12.5 Nullable Boolean & and | operators
- 12.13 Conditional logical operators [Go to Page]
- 12.13.1 General
- 12.13.2 Boolean conditional logical operators
- 12.13.3 User-defined conditional logical operators
- 12.14 The null coalescing operator
- 12.15 Conditional operator
- 12.16 Anonymous function expressions [Go to Page]
- 12.16.1 General
- 12.16.2 Anonymous function signatures
- 12.16.3 Anonymous function bodies
- 12.16.4 Overload resolution
- 12.16.5 Anonymous functions and dynamic binding
- 12.16.6 Outer variables [Go to Page]
- 12.16.6.1 General
- 12.16.6.2 Captured outer variables
- 12.16.6.3 Instantiation of local variables
- 12.16.7 Evaluation of anonymous function expressions
- 12.16.8 Implementation Exmple
- 12.17 Query expressions [Go to Page]
- 12.17.1 General
- 12.17.2 Ambiguities in query expressions
- 12.17.3 Query expression translation [Go to Page]
- 12.17.3.1 General
- 12.17.3.2 select and group … by clauses with continuations
- 12.17.3.3 Explicit range variable types
- 12.17.3.4 Degenerate query expressions
- 12.17.3.5 From, let, where, join and orderby clauses
- 12.17.3.6 Select clauses
- 12.17.3.7 Group clauses
- 12.17.3.8 Transparent identifiers
- 12.17.4 The query-expression pattern
- 12.18 Assignment operators [Go to Page]
- 12.18.1 General
- 12.18.2 Simple assignment
- 12.18.3 Compound assignment
- 12.18.4 Event assignment
- 12.19 Expression
- 12.20 Constant expressions
- 12.21 Boolean expressions
- 13. Statements [Go to Page]
- 13.1 General
- 13.2 End points and reachability
- 13.3 Blocks [Go to Page]
- 13.3.1 General
- 13.3.2 Statement lists
- 13.4 The empty statement
- 13.5 Labeled statements
- 13.6 Declaration statements [Go to Page]
- 13.6.1 General
- 13.6.2 Local variable declarations
- 13.6.3 Local constant declarations
- 13.7 Expression statements
- 13.8 Selection statements [Go to Page]
- 13.8.1 General
- 13.8.2 The if statement
- 13.8.3 The switch statement
- 13.9 Iteration statements [Go to Page]
- 13.9.1 General
- 13.9.2 The while statement
- 13.9.3 The do statement
- 13.9.4 The for statement
- 13.9.5 The foreach statement
- 13.10 Jump statements [Go to Page]
- 13.10.1 General
- 13.10.2 The break statement
- 13.10.3 The continue statement
- 13.10.4 The goto statement
- 13.10.5 The return statement
- 13.10.6 The throw statement
- 13.11 The try statement
- 13.12 The checked and unchecked statements
- 13.13 The lock statement
- 13.14 The using statement
- 13.15 The yield statement
- 14. Namespaces [Go to Page]
- 14.1 General
- 14.2 Compilation units
- 14.3 Namespace declarations
- 14.4 Extern alias directives
- 14.5 Using directives [Go to Page]
- 14.5.1 General
- 14.5.2 Using alias directives
- 14.5.3 Using namespace directives
- 14.6 Namespace member declarations
- 14.7 Type declarations
- 14.8 Qualified alias member [Go to Page]
- 14.8.1 General
- 14.8.2 Uniqueness of aliases
- 15. Classes [Go to Page]
- 15.1 General
- 15.2 Class declarations [Go to Page]
- 15.2.1 General
- 15.2.2 Class modifiers [Go to Page]
- 15.2.2.1 General
- 15.2.2.2 Abstract classes
- 15.2.2.3 Sealed classes
- 15.2.2.4 Static classes [Go to Page]
- 15.2.2.4.1 General
- 15.2.2.4.2 Referencing static class types
- 15.2.3 Type parameters
- 15.2.4 Class base specification [Go to Page]
- 15.2.4.1 General
- 15.2.4.2 Base classes
- 15.2.4.3 Interface implementations
- 15.2.5 Type parameter constraints
- 15.2.6 Class body
- 15.2.7 Partial declarations
- 15.3 Class members [Go to Page]
- 15.3.1 General
- 15.3.2 The instance type
- 15.3.3 Members of constructed types
- 15.3.4 Inheritance
- 15.3.5 The new modifier
- 15.3.6 Access modifiers
- 15.3.7 Constituent types
- 15.3.8 Static and instance members
- 15.3.9 Nested types [Go to Page]
- 15.3.9.1 General
- 15.3.9.2 Fully qualified name
- 15.3.9.3 Declared accessibility
- 15.3.9.4 Hiding
- 15.3.9.5 this access
- 15.3.9.6 Access to private and protected members of the containing type
- 15.3.9.7 Nested types in generic classes
- 15.3.10 Reserved member names [Go to Page]
- 15.3.10.1 General
- 15.3.10.2 Member names reserved for properties
- 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
- 15.5 Fields [Go to Page]
- 15.5.1 General
- 15.5.2 Static and instance fields
- 15.5.3 Readonly fields [Go to Page]
- 15.5.3.1 General
- 15.5.3.2 Using static readonly fields for constants
- 15.5.3.3 Versioning of constants and static readonly fields
- 15.5.4 Volatile fields
- 15.5.5 Field initialization
- 15.5.6 Variable initializers [Go to Page]
- 15.5.6.1 General
- 15.5.6.2 Static field initialization
- 15.5.6.3 Instance field initialization
- 15.6 Methods [Go to Page]
- 15.6.1 General
- 15.6.2 Method parameters [Go to Page]
- 15.6.2.1 General
- 15.6.2.2 Value parameters
- 15.6.2.3 Reference parameters
- 15.6.2.4 Output parameters
- 15.6.2.5 Parameter arrays
- 15.6.3 Static and instance methods
- 15.6.4 Virtual methods
- 15.6.5 Override methods
- 15.6.6 Sealed methods
- 15.6.7 Abstract methods
- 15.6.8 External methods
- 15.6.9 Partial methods
- 15.6.10 Extension methods
- 15.6.11 Method body
- 15.7 Properties [Go to Page]
- 15.7.1 General
- 15.7.2 Static and instance properties
- 15.7.3 Accessors
- 15.7.4 Automatically implemented properties
- 15.7.5 Accessibility
- 15.7.6 Virtual, sealed, override, and abstract accessors
- 15.8 Events [Go to Page]
- 15.8.1 General
- 15.8.2 Field-like events
- 15.8.3 Event accessors
- 15.8.4 Static and instance events
- 15.8.5 Virtual, sealed, override, and abstract accessors
- 15.9 Indexers
- 15.10 Operators [Go to Page]
- 15.10.1 General
- 15.10.2 Unary operators
- 15.10.3 Binary operators
- 15.10.4 Conversion operators
- 15.11 Instance constructors [Go to Page]
- 15.11.1 General
- 15.11.2 Constructor initializers
- 15.11.3 Instance variable initializers
- 15.11.4 Constructor execution
- 15.11.5 Default constructors
- 15.12 Static constructors
- 15.13 Finalizers
- 15.14 Iterators [Go to Page]
- 15.14.1 General
- 15.14.2 Enumerator interfaces
- 15.14.3 Enumerable interfaces
- 15.14.4 Yield type
- 15.14.5 Enumerator objects [Go to Page]
- 15.14.5.1 General
- 15.14.5.2 The MoveNext method
- 15.14.5.3 The Current property
- 15.14.5.4 The Dispose method
- 15.14.6 Enumerable objects [Go to Page]
- 15.14.6.1 General
- 15.14.6.2 The GetEnumerator method
- 15.15 Async Functions [Go to Page]
- 15.15.1 General
- 15.15.2 Evaluation of a task-returning async function
- 15.15.3 Evaluation of a void-returning async function
- 16. Structs [Go to Page]
- 16.1 General
- 16.2 Struct declarations [Go to Page]
- 16.2.1 General
- 16.2.2 Struct modifiers
- 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 [Go to Page]
- 16.4.1 General
- 16.4.2 Value semantics
- 16.4.3 Inheritance
- 16.4.4 Assignment
- 16.4.5 Default values
- 16.4.6 Boxing and unboxing
- 16.4.7 Meaning of this
- 16.4.8 Field initializers
- 16.4.9 Constructors
- 16.4.10 Static constructors
- 16.4.11 Automatically implemented properties
- 17. Arrays [Go to Page]
- 17.1 General
- 17.2 Array types [Go to Page]
- 17.2.1 General
- 17.2.2 The System.Array type
- 17.2.3 Arrays and the generic collection interfaces
- 17.3 Array creation
- 17.4 Array element access
- 17.5 Array members
- 17.6 Array covariance
- 17.7 Array initializers
- 18. Interfaces [Go to Page]
- 18.1 General
- 18.2 Interface declarations [Go to Page]
- 18.2.1 General
- 18.2.2 Interface modifiers
- 18.2.3 Variant type parameter lists [Go to Page]
- 18.2.3.1 General
- 18.2.3.2 Variance safety
- 18.2.3.3 Variance conversion
- 18.2.4 Base interfaces
- 18.3 Interface body
- 18.4 Interface members [Go to Page]
- 18.4.1 General
- 18.4.2 Interface methods
- 18.4.3 Interface properties
- 18.4.4 Interface events
- 18.4.5 Interface indexers
- 18.4.6 Interface member access
- 18.5 Qualified interface member names
- 18.6 Interface implementations [Go to Page]
- 18.6.1 General
- 18.6.2 Explicit interface member implementations
- 18.6.3 Uniqueness of implemented interfaces
- 18.6.4 Implementation of generic methods
- 18.6.5 Interface mapping
- 18.6.6 Interface implementation inheritance
- 18.6.7 Interface re-implementation
- 18.6.8 Abstract classes and interfaces
- 19. Enums [Go to Page]
- 19.1 General
- 19.2 Enum declarations
- 19.3 Enum modifiers
- 19.4 Enum members
- 19.5 The System.Enum type
- 19.6 Enum values and operations
- 20. Delegates [Go to Page]
- 20.1 General
- 20.2 Delegate declarations
- 20.3 Delegate members
- 20.4 Delegate compatibility
- 20.5 Delegate instantiation
- 20.6 Delegate invocation
- 21. Exceptions [Go to Page]
- 21.1 General
- 21.2 Causes of exceptions
- 21.3 The System.Exception class
- 21.4 How exceptions are handled
- 21.5 Common exception classes
- 22. Attributes [Go to Page]
- 22.1 General
- 22.2 Attribute classes [Go to Page]
- 22.2.1 General
- 22.2.2 Attribute usage
- 22.2.3 Positional and named parameters
- 22.2.4 Attribute parameter types
- 22.3 Attribute specification
- 22.4 Attribute instances [Go to Page]
- 22.4.1 General
- 22.4.2 Compilation of an attribute
- 22.4.3 Run-time retrieval of an attribute instance
- 22.5 Reserved attributes [Go to Page]
- 22.5.1 General
- 22.5.2 The AttributeUsage attribute
- 22.5.3 The Conditional attribute [Go to Page]
- 22.5.3.1 General
- 22.5.3.2 Conditional methods
- 22.5.3.3 Conditional attribute classes
- 22.5.4 The Obsolete attribute
- 22.5.5 Caller-info attributes [Go to Page]
- 22.5.5.1 General
- 22.5.5.2 The CallerLineNumber attribute
- 22.5.5.3 The CallerFilePath attribute
- 22.5.5.4 The CallerMemberName attribute
- 22.6 Attributes for interoperation
- 23. Unsafe code [Go to Page]
- 23.1 General
- 23.2 Unsafe contexts
- 23.3 Pointer types
- 23.4 Fixed and moveable variables
- 23.5 Pointer conversions [Go to Page]
- 23.5.1 General
- 23.5.2 Pointer arrays
- 23.6 Pointers in expressions [Go to Page]
- 23.6.1 General
- 23.6.2 Pointer indirection
- 23.6.3 Pointer member access
- 23.6.4 Pointer element access
- 23.6.5 The address-of operator
- 23.6.6 Pointer increment and decrement
- 23.6.7 Pointer arithmetic
- 23.6.8 Pointer comparison
- 23.6.9 The sizeof operator
- 23.7 The fixed statement
- 23.8 Fixed-size buffers [Go to Page]
- 23.8.1 General
- 23.8.2 Fixed-size buffer declarations
- 23.8.3 Fixed-size buffers in expressions
- 23.8.4 Definite assignment checking
- 23.9 Stack allocation
- Annex A. Grammar [Go to Page]
- A.1 General
- A.2 Lexical grammar [Go to Page]
- A.2.1 Comments
- A.2.2 Tokens
- A.2.3 Keywords
- A.2.4 Operators and punctuators
- A.2.5 Pre-processing directives
- A.3 Syntactic grammar [Go to Page]
- A.3.1 Basic concepts
- A.3.2 Types
- A.3.3 Variables
- A.3.4 Expressions
- A.3.5 Statements
- A.3.6 Namespaces
- A.3.7 Classes
- A.3.8 Structs
- A.3.9 Arrays
- A.3.10 Interfaces
- A.3.11 Enums
- A.3.12 Delegates
- A.3.13 Attributes
- A.4 Grammar extensions for unsafe code
- Annex B. Portability issues [Go to Page]
- B.1 General
- B.2 Undefined behavior
- B.3 Implementation-defined behavior
- B.4 Unspecified behavior
- B.5 Other Issues
- Annex C. Standard library [Go to Page]
- C.1 General
- C.2 Standard Library Types defined in ISO/IEC 23271
- C.3 Standard Library Types not defined in ISO/IEC 23271:2012
- Annex D. Documentation comments [Go to Page]
- D.1 General
- D.2 Introduction
- D.3 Recommended tags [Go to Page]
- D.3.1 General
- D.3.2
- D.3.3
- D.3.4
- D.3.5
- D.3.6
- D.3.7
- D.3.8
- D.3.9
- D.3.10
- D.3.11
- D.3.12
- D.3.13
- D.3.14
- D.3.15
- D.3.16
- D.3.17
- D.3.18
- D.3.19
- D.4 Processing the documentation file [Go to Page]
- D.4.1 General
- D.4.2 ID string format
- D.4.3 ID string examples
- D.5 An example [Go to Page]
- D.5.1 C# source code
- D.5.2 Resulting XML
- Bibliography [Go to Page]