Jon Jagger
jon@jaggersoft.com
Table of Contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Notes DownloadECMA-334 C# Language SpecificationTable of Contents1 Scope 2 Conformance 3 References 4 Definitions 5 Notational conventions 6 Acronyms and abbreviations 7 General description 8 Language Overview ......8.1 Getting started ......8.2 Types ............8.2.1 Predefined types ............8.2.2 Conversions ............8.2.3 Array types ............8.2.4 Type system unification ......8.3 Variables and parameters ......8.4 Automatic memory management ......8.5 Expressions ......8.6 Statements ......8.7 Classes ............8.7.1 Constants ............8.7.2 Fields ............8.7.3 Methods ............8.7.4 Properties ............8.7.5 Events ............8.7.6 Operators ............8.7.7 Indexers ............8.7.8 Instance constructors ............8.7.9 Destructors ............8.7.10 Static constructors ............8.7.11 Inheritance ......8.8 Structs ......8.9 Interfaces ......8.10 Delegates ......8.11 Enums ......8.12 Namespaces and assemblies ......8.13 Versioning ......8.14 Attributes 9 Lexical structure ......9.1 Programs ......9.2 Grammars ............9.2.1 Lexical grammar ............9.2.2 Syntactic grammar ......9.3 Lexical analysis ............9.3.1 Line terminators ............9.3.2 Comments ............9.3.3 White space ......9.4 Tokens ............9.4.1 Unicode escape sequences ............9.4.2 Identifiers ............9.4.3 Keywords ............9.4.4 Literals ............9.4.5 Operators and punctuators ......9.5 Pre-processing directives ............9.5.1 Conditional compilation symbols ............9.5.2 Pre-processing expressions ............9.5.3 Declaration directives ............9.5.4 Conditional compilation directives ............9.5.5 Diagnostic directives ............9.5.6 Region control ............9.5.7 Line directives 10 Basic concepts ......10.1 Application startup ......10.2 Application termination ......10.3 Declarations ......10.4 Members ............10.4.1 Namespace members ............10.4.2 Struct members ............10.4.3 Enumeration members ............10.4.4 Class members ............10.4.5 Interface members ............10.4.6 Array members ............10.4.7 Delegate members ......10.5 Member access ............10.5.1 Declared accessibility ............10.5.2 Accessibility domains ............10.5.3 Protected access for instance members ............10.5.4 Accessibility constraints ......10.6 Signatures and overloading ......10.7 Scopes ............10.7.1 Name hiding ......10.8 Namespace and type names ............10.8.1 Fully qualified names ......10.9 Automatic memory management ......10.10 Execution order 11 Types ......11.1 Value types ............11.1.1 Default constructors ............11.1.2 Struct types ............11.1.3 Simple types ............11.1.4 Integral types ............11.1.5 Floating point types ............11.1.6 The decimal type ............11.1.7 The bool type ............11.1.8 Enumeration types ......11.2 Reference types ............11.2.1 Class types ............11.2.2 The object type ............11.2.3 The string type ............11.2.4 Interface types ............11.2.5 Array types ............11.2.6 Delegate types ......11.3 Boxing and unboxing ............11.3.1 Boxing conversions ............11.3.2 Unboxing conversions 12 Variables ......12.1 Variable categories ............12.1.1 Static variables ............12.1.2 Instance variables ............12.1.3 Array elements ............12.1.4 Value parameters ............12.1.5 Reference parameters ............12.1.6 Output parameters ............12.1.7 Local variables ......12.2 Default values ......12.3 Definite assignment ............12.3.1 Initially assigned variables ............12.3.2 Initially unassigned variables ............12.3.3 Precise rules for determining definite assignment ......12.4 Variable references ......12.5 Atomicity of variable references 13 Conversions ......13.1 Implicit conversions ............13.1.1 Identity conversion ............13.1.2 Implicit numeric conversions ............13.1.3 Implicit enumeration conversions ............13.1.4 Implicit reference conversions ............13.1.5 Boxing conversions ............13.1.6 Implicit constant expression conversions ............13.1.7 User-defined implicit conversions ......13.2 Explicit conversions ............13.2.1 Explicit numeric conversions ............13.2.2 Explicit enumeration conversions ............13.2.3 Explicit reference conversions ............13.2.4 Unboxing conversions ............13.2.5 User-defined explicit conversions ......13.3 Standard conversions ............13.3.1 Standard implicit conversions ............13.3.2 Standard explicit conversions ......13.4 User-defined conversions ............13.4.1 Permitted user-defined conversions ............13.4.2 Evaluation of user-defined conversions ............13.4.3 User-defined implicit conversions ............13.4.4 User-defined explicit conversions 14 Expressions ......14.1 Expression classifications ............14.1.1 Values of expressions ......14.2 Operators ............14.2.1 Operator precedence and associativity ............14.2.2 Operator overloading ............14.2.3 Unary operator overload resolution ............14.2.4 Binary operator overload resolution ............14.2.5 Candidate user-defined operators ............14.2.6 Numeric promotions ......14.3 Member lookup ............14.3.1 Base types ......14.4 Function members ............14.4.1 Argument lists ............14.4.2 Overload resolution ............14.4.3 Function member invocation ......14.5 Primary expressions ............14.5.1 Literals ............14.5.2 Simple names ............14.5.3 Parenthesized expressions ............14.5.4 Member access ............14.5.5 Invocation expressions ............14.5.6 Element access ............14.5.7 This access ............14.5.8 Base access ............14.5.9 Postfix increment and decrement operators ............14.5.10 The new operator ............14.5.11 The typeof operator ............14.5.12 The checked and unchecked operators ......14.6 Unary expressions ............14.6.1 Unary plus operator ............14.6.2 Unary minus operator ............14.6.3 Logical negation operator ............14.6.4 Bitwise complement operator ............14.6.5 Prefix increment and decrement operators ............14.6.6 Cast expressions ......14.7 Arithmetic operators ............14.7.1 Multiplication operator ............14.7.2 Division operator ............14.7.3 Remainder operator ............14.7.4 Addition operator ............14.7.5 Subtraction operator ......14.8 Shift operators ......14.9 Relational and type-testing operators ............14.9.1 Integer comparison operators ............14.9.2 Floating-point comparison operators ............14.9.3 Decimal comparison operators ............14.9.4 Boolean equality operators ............14.9.5 Enumeration comparison operators ............14.9.6 Reference type equality operators ............14.9.7 String equality operators ............14.9.8 Delegate equality operators ............14.9.9 The is operator ............14.9.10 The as operator ......14.10 Logical operators ............14.10.1 Integer logical operators ............14.10.2 Enumeration logical operators ............14.10.3 Boolean logical operators ......14.11 Conditional logical operators ............14.11.1 Boolean conditional logical operators ............14.11.2 User-defined conditional logical operators ......14.12 Conditional operator ......14.13 Assignment operators ............14.13.1 Simple assignment ............14.13.2 Compound assignment ............14.13.3 Event assignment ......14.14 Expression ......14.15 Constant expressions ......14.16 Boolean expressions 15 Statements ......15.1 End points and reachability ......15.2 Blocks ............15.2.1 Statement lists ......15.3 The empty statement ......15.4 Labeled statements ......15.5 Declaration statements ............15.5.1 Local variable declarations ............15.5.2 Local constant declarations ......15.6 Expression statements ......15.7 Selection statements ............15.7.1 The if statement ............15.7.2 The switch statement ......15.8 Iteration statements ............15.8.1 The while statement ............15.8.2 The do statement ............15.8.3 The for statement ............15.8.4 The foreach statement ......15.9 Jump statements ............15.9.1 The break statement ............15.9.2 The continue statement ............15.9.3 The goto statement ............15.9.4 The return statement ............15.9.5 The throw statement ......15.10 The try statement ......15.11 The checked and unchecked statements ......15.12 The lock statement ......15.13 The using statement 16 Namespaces ......16.1 Compilation units ......16.2 Namespace declarations ......16.3 Using directives ............16.3.1 Using alias directives ............16.3.2 Using namespace directives ......16.4 Namespace members ......16.5 Type declarations 17 Classes ......17.1 Class declarations ............17.1.1 Class modifiers ............17.1.2 Class base specification ............17.1.3 Class body ......17.2 Class members ............17.2.1 Inheritance ............17.2.2 The new modifier ............17.2.3 Access modifiers ............17.2.4 Constituent types ............17.2.5 Static and instance members ............17.2.6 Nested types ............17.2.7 Reserved member names ......17.3 Constants ......17.4 Fields ............17.4.1 Static and instance fields ............17.4.2 Readonly fields ............17.4.3 Volatile fields ............17.4.4 Field initialization ............17.4.5 Variable initializers ......17.5 Methods ............17.5.1 Method parameters ............17.5.2 Static and instance methods ............17.5.3 Virtual methods ............17.5.4 Override methods ............17.5.5 Sealed methods ............17.5.6 Abstract methods ............17.5.7 External methods ............17.5.8 Method body ............17.5.9 Method overloading ......17.6 Properties ............17.6.1 Static and instance properties ............17.6.2 Accessors ............17.6.3 Virtual ......17.7 Events ............17.7.1 Field-like events ............17.7.2 Event accessors ............17.7.3 Static and instance events ............17.7.4 Virtual ......17.8 Indexers ............17.8.1 Indexer overloading ......17.9 Operators ............17.9.1 Unary operators ............17.9.2 Binary operators ............17.9.3 Conversion operators ......17.10 Instance constructors ............17.10.1 Constructor initializers ............17.10.2 Instance variable initializers ............17.10.3 Constructor execution ............17.10.4 Default constructors ............17.10.5 Private constructors ............17.10.6 Optional instance constructor parameters ......17.11 Static constructors ......17.12 Destructors 18 Structs ......18.1 Struct declarations ............18.1.1 Struct modifiers ............18.1.2 Struct interfaces ............18.1.3 Struct body ......18.2 Struct members ......18.3 Class and struct differences ............18.3.1 Value semantics ............18.3.2 Inheritance ............18.3.3 Assignment ............18.3.4 Default values ............18.3.5 Boxing and unboxing ............18.3.6 Meaning of this ............18.3.7 Field initializers ............18.3.8 Constructors ............18.3.9 Destructors ......18.4 Struct examples ............18.4.1 Database integer type ............18.4.2 Database boolean type 19 Arrays ......19.1 Array types ............19.1.1 The System.Array type ......19.2 Array creation ......19.3 Array element access ......19.4 Array members ......19.5 Array covariance ......19.6 Array initializers 20 Interfaces ......20.1 Interface declarations ............20.1.1 Interface modifiers ............20.1.2 Base interfaces ............20.1.3 Interface body ......20.2 Interface members ............20.2.1 Interface methods ............20.2.2 Interface properties ............20.2.3 Interface events ............20.2.4 Interface indexers ............20.2.5 Interface member access ......20.3 Fully qualified interface member names ......20.4 Interface implementations ............20.4.1 Explicit interface member implementations ............20.4.2 Interface mapping ............20.4.3 Interface implementation inheritance ............20.4.4 Interface re-implementation ............20.4.5 Abstract classes and interfaces 21 Enums ......21.1 Enum declarations ......21.2 Enum modifiers ......21.3 Enum members ......21.4 Enum values and operations 22 Delegates ......22.1 Delegate declarations ......22.2 Delegate instantiation ......22.3 Delegate invocation 23 Exceptions ......23.1 Causes of exceptions ......23.2 The System.Exception class ......23.3 How exceptions are handled ......23.4 Common Exception Classes 24 Attributes ......24.1 Attribute classes ............24.1.1 Attribute usage ............24.1.2 Positional and named parameters ............24.1.3 Attribute parameter types ......24.2 Attribute specification ......24.3 Attribute instances ............24.3.1 Compilation of an attribute ............24.3.2 Run-time retrieval of an attribute instance ......24.4 Reserved attributes ............24.4.1 The AttributeUsage attribute ............24.4.2 The Conditional attribute ............24.4.3 The Obsolete attribute 25 Unsafe code ......25.1 Unsafe contexts ......25.2 Pointer types ......25.3 Fixed and moveable variables ......25.4 Pointer conversions ......25.5 Pointers in expressions ............25.5.1 Pointer indirection ............25.5.2 Pointer member access ............25.5.3 Pointer element access ............25.5.4 The address-of operator ............25.5.5 Pointer increment and decrement ............25.5.6 Pointer arithmetic ............25.5.7 Pointer comparison ............25.5.8 The sizeof operator ......25.6 The fixed statement ......25.7 Stack allocation ......25.8 Dynamic memory allocation
{ JSL }
Jagger Software Ltd
Company # 4070126
VAT # 762 5213 42
Valid HTML 4.01Valid CSS


Website Counter
eBay