C# annotated standard:
Gespeichert in:
Beteiligte Personen: | , , |
---|---|
Format: | Buch |
Sprache: | Englisch |
Veröffentlicht: |
Amsterdam [u.a.]
Morgan Kaufmann/Elsevier
2007
|
Schlagwörter: | |
Links: | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017445193&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
Umfang: | XXXII, 825 S. |
ISBN: | 9780123725110 |
Internformat
MARC
LEADER | 00000nam a2200000zc 4500 | ||
---|---|---|---|
001 | BV023802994 | ||
003 | DE-604 | ||
005 | 20080827000000.0 | ||
007 | t| | ||
008 | 080305s2007 xx |||| 00||| eng d | ||
020 | |a 9780123725110 |9 978-0-12-372511-0 | ||
035 | |a (OCoLC)836596238 | ||
035 | |a (DE-599)BVBBV023802994 | ||
040 | |a DE-604 |b ger | ||
041 | 0 | |a eng | |
049 | |a DE-11 | ||
082 | 0 | |a 005.133 | |
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
100 | 1 | |a Jagger, Jon |e Verfasser |4 aut | |
245 | 1 | 0 | |a C# annotated standard |c Jon Jagger ; Nigel Perry ; Peter Sestoft |
264 | 1 | |a Amsterdam [u.a.] |b Morgan Kaufmann/Elsevier |c 2007 | |
300 | |a XXXII, 825 S. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 0 | 7 | |a C sharp |0 (DE-588)4616843-6 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a C sharp |0 (DE-588)4616843-6 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Perry, Nigel |e Verfasser |4 aut | |
700 | 1 | |a Sestoft, Peter |d 1962- |e Verfasser |0 (DE-588)131473476 |4 aut | |
856 | 4 | 2 | |m GBV Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017445193&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-017445193 |
Datensatz im Suchindex
_version_ | 1819384205559201792 |
---|---|
adam_text | C# ANNOTATED STANDARD JON JAGGER SOFTWARE CONSULTANT/TRAINER UNITED
KINGDOM NIGEL PERRY COMPUTER SCIENTIST NEW ZEALAND PETER SESTOFT IT
UNIVERSITY OF COPENHAGEN DENMARK AMSTERDAM * BOSTON * HEIDELBERG *
LONDON NEW YORK * OXFORD * PARIS * SAN DIEGO SAN FRANCISCO * SINGAPORE *
SYDNEY * TOKYO MORGAN KAUFMANN PUBLISHERS IS AN IMPRINT OF ELSEVIER
MORGAN KAUFMANN PUBLISHERS CONTENTS FOREWORD TO THE ANNOTATED STANDARD
XXIV PREFACE TO THE ANNOTATED STANDARD XXV ABOUT THE AUTHORS XXVIII
ERRATA TO THE INTERNATIONAL STANDARD XXIX THE C# INTERNATIONAL STANDARD
AND FOREWORD XXXII INTRODUCTION 1 CLI NOT REQUIRED 1 1 SCOPE 2 2
CONFORMANCE 3 INTERPRETERS 4 3 NORMATIVE REFERENCES 5 4 DEFINITIONS 6
APPLICATION VS. PROGRAM 6 ASSEMBLY VS. CLASS FILES 6 ACCESSING CLASS
LIBRARIES 7 PROGRAMS, ASSEMBLIES, APPLICATIONS AND CLASS LIBRARIES 7 5
NOTATIONAL CONVENTIONS 9 6 ACRONYMS AND ABBREVIATIONS 11 ASCII RULES! 11
THEC#NAME 11 7 GENERAL DESCRIPTION 12 WHERE TO LOOK FOR REQUIREMENTS ON
UNSAFE CONSTRUCTS 12 8 LANGUAGE OVERVIEW 13 ANNOTATION FREE ZONE 13 8.1
GETTING STARTED 13 8.2 TYPES 14 8.2.1 PREDEFINED TYPES 16 8.2.2
CONVERSIONS 18 8.2.3 ARRAY TYPES 19 8.2.4 TYPE SYSTEM UNIFICATION 21 8.3
VARIABLES AND PARAMETERS 22 8.4 AUTOMATIC MEMORY MANAGEMENT 26 VII 8.5
EXPRESSIONS 28 8.6 STATEMENTS 29 8.7 CLASSES 32 8.7.1 CONSTANTS 35 8.7.2
FIELDS 35 8.7.3 METHODS 36 8.7.4 PROPERTIES 39 8.7.5 EVENTS 39 8.7.6
OPERATORS 41 8.7.7 INDEXERS 42 8.7.8 INSTANCE CONSTRUCTORS 44 8.7.9
FINALIZERS 45 8.7.10 STATIC CONSTRUCTORS 45 8.7.11 INHERITANCE 46 8.7.12
STATIC CLASSES 47 8.7.13 PARTIAL TYPE DECLARATIONS 48 8.8 STRUCTS 49 8.9
INTERFACES 49 8.10 DELEGATES 51 8.11 ENUMS 52 8.12 NAMESPACES AND
ASSEMBLIES 53 8.13 VERSIONING 55 8.14 EXTERN ALIASES 57 8.15 ATTRIBUTES
59 8.16 GENERICS 61 8.16.1 WHY GENERICS? 61 8.16.2 CREATING AND
CONSUMING GENERICS 62 8.16.3 MULTIPLE TYPE PARAMETERS 63 8.16.4
CONSTRAINTS 63 8.16.5 GENERIC METHODS 65 8.17 ANONYMOUS METHODS 66 8.18
ITERATORS 69 8.19 NULLABLE TYPES 73 9 LEXICAL STRUCTURE 76 9.1 PROGRAMS
76 MUCH ADO ABOUT NOTHING 76 9.2 GRAMMARS 77 9.2.1 LEXICAL GRAMMAR 77
9.2.2 SYNTACTIC GRAMMAR 77 9.2.3 GRAMMAR AMBIGUITIES 78 RATIONALE: THE
FOLLOWING TOKEN SET 78 SIMILAR CAST EXPRESSION AMBIGUITY 79 F(G 9.3
LEXICAL ANALYSIS 79 9.3.1 LINE TERMINATORS 80 9.3.2 COMMENTS 81 9.3.3
WHITE SPACE 82 9.4 TOKENS 82 9.4.1 UNICODE ESCAPE SEQUENCES 83 NO
ESCAPES IN VERBATIM STRINGS 83 NO ESCAPES IN COMMENTS 83 9.4.2
IDENTIFIERS 84 IDENTIFIER NORMALIZATION 85 THE HUMBLE UNDERSCORE 85
KEYWORD ESCAPE MECHANISM 86 CODE GENERATION 87 9.4.3 KEYWORDS 87
LANGUAGE EVOLUTION 87 9.4.4 LITERAIS 88 9.4.4.1 BOOLEAN LITERALS 88
BOOLEAN ARGUMENTS CONSIDERED HARMFUL? 88 9.4.4.2 INTEGER LITERALS 89
HISTORICAL NOTE 90 BOUNDARY DIFFERENCES 90 9.4.4.3 REAL LITERALS 90 WHAT
IS L.D? 91 MONEY OR DECIMAL? 91 9.4.4.4 CHARACTER LITERALS 92 NO OCTAL
CHARACTER ESCAPES 93 9.4.4.5 STRING LITERALS 93 PLATFORM INDEPENDENT
NEWLINES 94 HISTORICAL NOTE 94 HAPPY BIRTHDAY, JOEL 95
OVERSPECIFICATION... 95 HEXADECIMAL ESCAPE CHARACTER PITFALLS 95
CONTENTS 9.4.4.6 THE NULL LITERAL 96 9.4.5 OPERATORS AND PUNCTUATORS 96
»== TOKENIZATION ODDITY 97 TOKENIZATION ANECDOTE 97 9.5 PRE-PROCESSING
DIRECTIVES 97 TO PRE-PROCESS, OR NOT PRE-PROCESS? 98 WHY NO DELIMITED
COMMENTS IN #DIRECTIVES? 98 WHY NO MACROS? 99 9.5.1 CONDITIONAL
COMPILATION SYMBOLS 99 CONDITIONAL SYMBOL ODDITY 100 NO PROGRAM-WIDE
PRE-PROCESSING SYMBOLS 100 9.5.2 PRE-PROCESSING EXPRESSIONS 100
INEQUALITY IS XOR, EQUALITY IS NOT-XOR 101 9.5.3 DECLARATION DIRECTIVES
101 RATIONALE: PP-DECLARATION PLACEMENT 102 CONDITIONAL SYMBOL STYLE 103
9.5.4 CONDITIONAL COMPILATION DIRECTIVES 103 ANOTHER ISSUE WITH COMMENTS
AND #IF 106 CARBUNCLE 106 9.5.5 DIAGNOSTIC DIRECTIVES 107 DIAGNOSTIC
DIRECTIVE EXAMPLE 107 9.5.6 REGION CONTROL 108 HISTORICAL NOTE 108 9.5.7
LINE DIRECTIVES 108 HISTORICAL NOTE 109 #LINE EXAMPLE 109 9.5.8 PRAGMA
DIRECTIVES 110 10 BASIC CONCEPTS 111 THE EMPEROR HAS NO THREADS! 111
EXAMPLE: SYNCHRONIZATION AND THREADS 114 CONTENTS IX 10.1 10.2 10.3 10.4
10.4.1 10.4.2 10.4.3 10.4.4 10.4.5 10.4.6 10.4.7 10.5 10.5.1 APPLICATION
STARTUP MAIN IS CALLABLE 118 117 10.5.2 10.5.3 10.5.4 10.6 APPLICATION
TERMINATION 118 SUPPRESSION OF FINALIZERS 119 NO INFANTICIDE 119
DECLARATIONS 119 DECLARATION SPACES AND ANONYMOUS METHODS 121 MEMBERS
123 124 NAMESPACE MEMBERS 123 STRUCT MEMBERS 123 ENUMERATION MEMBERS
CLASS MEMBERS 124 INTERFACE MEMBERS 124 ARRAY MEMBERS 124 DELEGATE
MEMBERS 124 MEMBER ACCESS 124 DECLARED ACCESSIBILITY 124 CLARIFICATION
OF INTERNAL 125 CLARIFICATION OF PROTECTED INTERNAL 125 ACCESSIBILITY
VS. VISIBILITY 126 DEFAULT CONSIDERED HARMFUL? 126 DEFAULT CLASS
ACCESSIBILITY PITFALL 126 ACCESSIBILITY DOMAINS 127 PROTECTED ACCESS FOR
INSTANCE MEMBERS 129 RATIONALE: ACCESS TO PROTECTED MEMBERS 130 ACCESS
TO OTHER INSTANTIATIONS 131 TWIN OR JUST SIBLING? 131 ACCESSIBILITY
CONSTRAINTS 132 DECLARATION ACCESSIBILITY CONSISTENCY 133 CONSTRAINED
OBJECT CREATION 134 SIGNATURES AND OVERLOADING 134 EXPLICIT INTERFACE
IMPLEMENTATION 134 PITFALL OF OVERLOADING ON REF OR OUT 135 WHY NO REF
AND OUT OVERLOADING? 135 10.7 SCOPES 136 DECLARATION SCOPE WITHIN SWITCH
STATEMENTS 137 ANONYMOUS METHODS IMPACT SCOPE AND LIFETIME 138 IN SCOPE
BUT NOT REFERABLE 139 10.7.1 NAME HIDING 140 CONTEXT-SENSITIVE NAME
RESOLUTION 140 10.7.1.1 HIDING THROUGH NESTING 140 NAME HIDING IN A
CONSTRUCTOR 141 10.7.1.2 HIDING THROUGH INHERITANCE 142 ABSTRACT CANNOT
BE HIDDEN 143 NAMESPACE AND TYPE NAMES 144 AN EXTENDED EXAMPLE 146
UNQUALIFIED NAME 150 FULLY QUALIFIED NAMES 150 AUTOMATIC MEMORY
MANAGEMENT 151 CONSTRUCTORS, EXCEPTIONS AND FINALIZERS: A VOLATILE
COMBINATION 152 ONE IMPLEMENTATION S GARBAGE IS ANOTHER S TREASURE 153
10.10 EXECUTION ORDER 156 SYNCHRONOUS ORDER, ASYNCHRONOUS CHAOS 157 11
TVPES 159 SHALLOW COPYING OF VALUE TYPES 159 UNIFORMITY AND HIDDEN COSTS
159 11.1 VALUE TYPES 160 THE IMMEDIATE BASE CLASS OF VALUE TYPES 161
10.8 10.8.1 10.8.2 10.9 FR CONTENTS 11.1.1 11.1.2 11.1.3 11.1.4 11.1.5
11.1.6 11.1.7 11.1.8 11.1.9 11.2 11.2.1 11.2.2 11.2.3 11.2.4 11.2.5
11.2.6 11.2.7 11.3 11.3.1 THE SYSTEM.VALUETYPE TYPE 161 DEFAULT
CONSTRUCTORS 162 STRUCT TYPES 162 SIMPLE TYPES 162 USE THE KEYWORDS! 163
KEYWORDS NOT ALLOWED! DO NOT USE THE KEYWORDS INTEGRAL TYPES 164
BYTE/SBYTE NAMING ODDITY 165 FLOATING POINT TYPES 166 TWO S COMPANY,
THREE S A CROWD 166 THE OTHER FLOATING POINT TYPE 166 RARITY IS RELATIVE
167 THE DECIMAL TYPE 168 IEEE DECIMAL 168 USING IEEE DECIMAL IN C#:
SUPPORTING LEGACY DATA 168 THE BOOL TYPE 169 STRONG BOOLEANS 170
ENUMERATION TYPES 170 WEAK ENUMS: DISTINCT BUT SIMILAR 170 REFERENCE
TYPES 170 OBJECTS VS. VALUES 171 CLASS TYPES 171 THE OBJECT TYPE 171 THE
STRING TYPE 171 STRINGS ARE IMMUTABLE 171 INSECURE STRINGS 172 INTERFACE
TYPES 172 INTERFACE INHERITANCE IS NOT CLASS INHERITANCE 172 ARRAY TYPES
172 DELEGATE TYPES 172 THE NULL TYPE 173 PSEUDO-TYPE 173 BOXING AND
UNBOXING 173 CAN YOU TEIL WHETHER A STRUCT INSTANCE IS BOXED? 173 BOXING
CONVERSIONS 175 WHITE LIES AND DIAPHANOUS TYPES 176 11.3.2 UNBOXING
CONVERSIONS SOMETIMES YOUR HOST BITES... 179 178 64 164 11.4 11.4.1
11.4.2 NULLABLE TYPES 179 MEMBERS 180 DEFAULT VALUE 180 TO BE, OR NOT TO
BE...A VALUE TYPE 180 IMPLEMENTED INTERFACES 180 12 VARIABLES 181
ALIASING 181 12.1 VARIABLE CATEGORIES 12.1.1 STATIC VARIABLES 181 12.1.2
INSTANCE VARIABLES 181 12.1.2.1 INSTANCE VARIABLES IN CLASSES 182
12.1.2.2 INSTANCE VARIABLES IN STRUCTS 182 181 12.1.3 12.1.4 12.1.5
12.1.6 12.1.7 12.2 12.3 12.3.1 ARRAY ELEMENTS 182 VALUE PARAMETERS 182
REFERENCE PARAMETERS 182 EXAMPLES 183 EXAMPLE: LINKED DATA STRUCTURES
183 EXAMPLE: AVOIDING REPEATED INDEX CALCULATIONS 184 EXAMPLE: AVOIDING
SIMPLE REASSIGNMENT ERRORS 185 OUTPUT PARAMETERS 186 OUTPUT PARAMETERS
VS. REFERENCE PARAMETERS 186 USING OUTPUT PARAMETERS TO RETURN MULTIPLE
RESULTS 187 LOCAL VARIABLES 187 EXTENDED LIFE OR EARLY DEATH 188 DEFAULT
VALUES 188 RECURSIVE INITIALISATION POINTLESS INSTANCE FIELD
INITIALIZATION 189 DEFINITE ASSIGNMENT DEFINITELY ASSIGNED, MAYBE... 190
INITIALLY ASSIGNED VARIABLES 191 189 189 XI 12.3.2 12.3.3 12.3.3.1
12.3.3.2 12.3.3.3 12.3.3.4 12.3.3.5 12.3.3.6 12.3.3.7 12.3.3.8 12.3.3.9
12.3.3.10 12.3.3.11 12.3.3.12 12.3.3.13 12.3.3.14 12.3.3.15 12.3.3.16
12.3.3.17 12.3.3.18 12.3.3.19 12.3.3.20 12.3.3.21 12.3.3.22 12.3.3.23
12.3.3.24 12.3.3.25 INITIALLY UNASSIGNED VARIABLES 191 PRECISE RULES FOR
DETERMINING DEFINITE ASSIGNMENT 191 CURRENT COMPILERS, CONSTANT
EXPRESSIONS, AND DEFINITE ASSIGNMENT 192 GENERAL RULES FOR STATEMENTS
193 ARRIVING FROM THE UNREACHABLE 193 BLOCK STATEMENTS, CHECKED, AND
UNCHECKED STATEMENTS 194 EXPRESSION STATEMENTS 194 12.3.3.26 12.3.3.27
12.3.3.28 12.3.3.29 12.4 12.5 1 DECLARATION STATEMENTS 13 CONVERS 194 IF
STATEMENTS 194 DEFINITELY CONFUSED? 194 SWITCH STATEMENTS 195 WHILE
STATEMENTS 195 DO STATEMENTS 195 FOR STATEMENTS 196 BREAK, CONTINUE, AND
GOTO STATEMENTS 196 THROW STATEMENTS 196 RETURN STATEMENTS 196 TRY-CATCH
STATEMENTS 197 TRY-FINALLY STATEMENTS 197 TRY-CATCH-FINALLY STATEMENTS
197 FOREACH STATEMENTS 198 USING STATEMENTS 199 LOCK STATEMENTS 199
GENERAL RULES FOR SIMPLE EXPRESSIONS 199 GENERAL RULES FOR EXPRESSIONS
WITH EMBEDDED EXPRESSIONS 199 INVOCATION EXPRESSIONS AND OBJECT CREATION
EXPRESSIONS 200 TRYING TO PEEK AT AN UNINITIALIZED VARIABLE 200 SIMPLE
ASSIGNMENT EXPRESSIONS 200 && EXPRESSIONS 201 || EXPRESSIONS 202 !
EXPRESSIONS 203 13.1 ] 13.1.1 13.1.2 13.1.3 13.1.4 13.1.5 13.1.6 13.1.7
13.1.8 13.2 1 ] 13.2.1 EXPRESSIONS 203 ANONYMOUS METHOD EXPRESSIONS 203
YIELD STATEMENTS 204 ?? EXPRESSIONS 204 ALTERNATIVE DEFINITE ASSIGNMENT
RULES FOR THE ?? OPERATOR 205 VARIABLE REFERENCES 206 CLASSIFIED AS A
VARIABLE 206 ATOMICITY OF VARIABLE REFERENCES 207 ATOMICITY VS.
VOLATILITY 207 IONS 208 IMPLICIT CONVERSIONS 208 IDENTITY CONVERSION 208
IMPLICIT NUMERIC CONVERSIONS 208 LOSS OF PRECISION 209 IMPLICIT
ENUMERATION CONVERSIONS 209 EQUAL RIGHTS FOR HEXADECIMALS 209 IMPLICIT
REFERENCE CONVERSIONS 210 CONVERSIONS TO IMPLEMENTED INTERFACES 210 211
BOXING CONVERSIONS LEAVE MY BOX ALONE.. IMPLICIT TYPE PARAMETER
CONVERSIONS 212 IMPLICIT CONSTANT EXPRESSION CONVERSIONS 212 MIND YOUR
CONSTANTS USER-DEFINED IMPLICIT CONVERSIONS 212 211 212 EXPLICIT
CONVERSIONS 212 BEING EXPLICITLY IMPLICIT 213 EXPLICIT NUMERIC
CONVERSIONS 213 WHY NO DOUBLE TO DECIMAL IMPLICIT CONVERSIONS? 215
DECIMAL CONVERSION EXCEPTIONS DEPENDENT ON FORMAT 215 XLL CONTENTS
13.2.2 13.2.3 13.2.4 13.2.5 13.2.6 EXPLICIT ENUMERATION CONVERSIONS 216
DUBIOUS EXPLICIT ENUM CONVERSIONS 216 EXPLICIT REFERENCE CONVERSIONS 216
NEVER CHANGES, MAYBE... 217 CONVERSION FROM SYSTEM.COLLECTIONS.GENERIC.
ILIST 218 MAULED BY THE HOST, AGAIN... 219 14 UNBOXING CONVERSIONS
EXPLICIT TYPE PARAMETER CONVERSIONS 220 USER-DEFINED EXPLICIT
CONVERSIONS 220 219 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4
13.5 13.6 STANDARD CONVERSIONS 220 STANDARD IMPLICIT CONVERSIONS 221
STANDARD EXPLICIT CONVERSIONS 221 USER-DEFINED CONVERSIONS 221 PERMITTED
USER-DEFINED CONVERSIONS 221 EVALUATION OF USER-DEFINED CONVERSIONS 221
USER-DEFINED IMPLICIT CONVERSIONS 222 USER-DEFINED EXPLICIT CONVERSIONS
223 ANONYMOUS METHOD CONVERSIONS 224 ANECDOTE: MONO WIDGET DESIGN
IMPROVES C# 224 METHOD GROUP CONVERSIONS 226 NON-ORTHOGONALITY 226
THROUGH A GLASS DARKLY... 227 14.2.2 14.2.3 14.2.4 14.2.5 14.2.6 14.2.6.
14.2.6. 14.2.7 14.3 14.3.1 14.4 14.4.1 13.7 CONVERSIONS INVOLVING
NULLABLE TYPES 229 WRAPPING CONVERSIONS 229 13.7.1 NULL TYPE CONVERSIONS
229 13.7.2 NULLABLE CONVERSIONS 229 NULLABLE IDENTITY CONVERSIONS 230
13.7.3 LIFTED CONVERSIONS 230 THE SAME, BUT DIFFERENT 230 EXPRESSIONS
231 14.1 EXPRESSION CLASSIFICATIONS 231 14.1.1 VALUES OF EXPRESSIONS 232
14.2 OPERATORS 232 OPERAND ORDER OF EVALUATION 233 14.2.1 OPERATOR
PRECEDENCE AND ASSOCIATIVITY 233 ERRATUM AND CLARIFICATION 234 OPERATOR
OVERLOADING 234 UNARY OPERATOR OVERLOAD RESOLUTION 235 BINARY OPERATOR
OVERLOAD RESOLUTION 236 CANDIDATE USER-DEFINED OPERATORS 236 NUMERIC
PROMOTIONS 237 LAND OF SURPRISES 237 INTO THE VOID 239 LOOSELY LITERAL
239 REASONS FOR NUMERIC PROMOTION 239 UNARY NUMERIC PROMOTIONS 240
BINARY NUMERIC PROMOTIONS 240 LIFTED OPERATORS 241 NULL VALUES IN C# AND
IN SQL 242 MEMBER LOOKUP 243 BASE TYPES 244 FUNCTION MEMBERS 245
ARGUMENT LISTS 247 UNREALISTIC OPTIMISM 248 HIDDEN (SMALL) COSTS OF
PARAMETER ARRAYS 249 CONTENTS XIII STRING FORMATTING NOT PART OF THE
STANDARD 249 14.4.2 OVERLOAD RESOLUTION 250 OVERLOAD RESOLUTION: C# VS.
CIL 251 14.4.2.1 APPLICABLE FUNCTION MEMBER 251 14.4.2.2 BETTER FUNCTION
MEMBER 252 14.4.2.3 BETTER CONVERSION 253 LOST DIGITS 253 BETTER
CONVERSION PITFALL 253 14.4.3 FUNCTION MEMBER INVOCATION 254 NO BOXING
256 14.4.3.1 INVOCATIONS ON BOXED INSTANCES 256 FROM DIAPHANOUS TO
CONCRETE 257 BUT WAIT, THERE IS MORE... 257 14.5 14.5.1 14.5.2 14.5.2.1
14.5.3 14.5.4 14.5.4.1 14.5.5 14.5.5.1 14.5.5.2 14.5.6 14.5.6.1 PRIMARY
EXPRESSIONS 257 LITERAIS 258 SIMPLE NAMES 258 INVARIANT MEANING IN
BLOCKS 260 SIMPLER CONFUSION 261 PARENTHESIZED EXPRESSIONS 261 MEMBER
ACCESS 262 IDENTICAL SIMPLE NAMES AND TYPE NAMES 263 INVOCATION
EXPRESSIONS 264 METHOD INVOCATIONS 264 WHAT IS NOT CONSIDERED DURING
OVERLOAD RESOLUTION? 265 SOMETIMES THERE IS NO RIGHT ANSWER... 266
DELEGATE INVOCATIONS 268 RAISING EVENTS AND THREAD SAFETY 268 ELEMENT
ACCESS 269 ARRAY ACCESS 270 ARRAY INDEXING CORNER CASE 270 RED KATIPO
271 14.5.6.2 14.5.7 14.5.8 14.5.9 INDEXER ACCESS 271 THIS ACCESS THIS =
THAT? 14.5.10 14.5.10.1 14.5.10.2 14.5.10.3 14.5.11 14.5.12 14.5.13
14.5.14 14.5.15 14.5.15.1 14.5.15.2 14.5.15.3 272 273 273 274 275 275
276 277 279 280 BASE ACCESS BASE ACCESS IS NONVIRTUAL 273 NO OVERRIDE
BYPASS POSTFIX INCREMENT AND DECREMENT OPERATORS OVERFLOW EVENTUALLY...
THE NEW OPERATOR NEW FOR OLD? 277 OBJECT CREATION EXPRESSIONS ARRAY
CREATION EXPRESSIONS JAVA DIFFERENCE DELEGATE CREATION EXPRESSIONS 281
NAME EQUIVALENCE AND CONVERSIONS 282 CREATING A DELEGATE FROM A DELEGATE
285 BREAKING CHANGE THE TYPEOF OPERATOR TYPEOF (GENERIC , ) THE SIZEOF
OPERATOR MARSHAL.SIZEOF != SIZEOF 291 THE CHECKED AND UNCHECKED
OPERATORS 291 CHECKED EXPRESSION PITFALL 292 (UN) CHECKED CONSTANTS 292
THE MEANING OF (UN) CHECKED 295 DEFAULT VALUE EXPRESSION 295 HISTORICAL
ASIDE 295 286 287 289 290 ANONYMOUS METHODS BREAKING THE TIES THAT
BIND... 296 ANONYMOUS SHARING ANONYMOUS METHOD SIGNATURES 297 ANONYMOUS
METHOD BLOCKS 297 OUTER VARIABLES 298 296 296 XIV CONTENTS 14.5.15.3.1
CAPTURED OUTER VARIABLES 298 CAPTURED LOCAL VARIABLES: MODIFICATION AND
LIFETIME 299 CAPTURED VARIABLE PITFALL 299 CAUTION: SPACE LEAKS 300
VISITOR-STYLE ENUMERATION 300 14.5.15.3.2 INSTANTIATION OF LOCAL
VARIABLES 302 CAUTION: LOCAL VARIABLES SHARED BETWEEN THREADS 305
CAUTION: IMPLEMENTATION- DEPENDENT SPACE LEAKS 305 14.5.15.4 ANONYMOUS
METHOD EVALUATION 307 INTERLUDE: CALL-BY-NAME 308 14.5.15.5
IMPLEMENTATION EXAMPLE 311 ANONYMOUS METHODS, GENERIC PARAMETERS, AND A
BUG 314 14.6 UNARY EXPRESSIONS 315 14.6.1 UNARY PLUS OPERATOR 315 14.6.2
UNARY MINUS OPERATOR 315 14.6.3 LOGICAL NEGATION OPERATOR 316 14.6.4
BITWISE COMPLEMENT OPERATOR 317 14.6.5 PREFIX INCREMENT AND DECREMENT
OPERATORS 317 OBSCURE C++ DIFFERENCE 317 14.6.6 CAST EXPRESSIONS 318
14.7 ARITHMETIC OPERATORS 319 VOID ARITHMETIC 319 OPERATOR TO
INSTRUCTION/ METHOD MAPPING NOT DEFINED 319 14.7.1 MULTIPLICATION
OPERATOR 14.7.2 DIVISION OPERATOR 321 DIVIDED WE STAND 321 A TOUCH OF
PENTIUM 323 14.7.3 14.7.4 14.7.5 14.8 14.9 320 14.9.1 14.9.2 14.9.3
14.9.4 14.9.5 14.9.6 14.9.7 REMAINDER OPERATOR 324 REMAINDER LATITUDE
324 IEC REMAINDER 325 FURTHER LATITUDE 325 ADDITION OPERATOR 326 HIDDEN
BOXING 327 IMPLICITLY AVOIDING THE BOXING 328 STRING CONCATENATION
EFFICIENCY 329 SUBTRACTION OPERATOR 330 NEGATION, NOT NEGATIVE 331
LEGACY CODING STYLE 333 SHIFT OPERATORS NEGATIVE SHIFTS 333 334 OUT OF
BOUNDS SHIFT COUNT BEHAVIOR? 335 ZERO-EXTENSION SIGNED SHIFT 336
RELATIONAL AND TYPE-TESTING OPERATORS 336 INCOMPARABLE 336 ALL
REFERENCES ARE EQUAL, BUT SOME ARE MORE EQUAL THAN OTHERS 337 THE
INVISIBLE CONTRACT 340 EQUALITY FOR ALL 341 EXPLOITING THE BUILT-IN
EQUALITY ON VALUE TYPES 342 INTEGER COMPARISON OPERATORS 342
FLOATING-POINT COMPARISON OPERATORS 343 NANS MAY BE EQUAL 344 DECIMAL
COMPARISON OPERATORS 344 BOOLEAN EQUALITY OPERATORS 345 ENUMERATION
COMPARISON OPERATORS 345 REFERENCE TYPE EQUALITY OPERATORS 345
SPECIFICATION MISTAKE 346 BOXING NOT REQUIRED 346 STRING EQUALITY
OPERATORS 348 14.9.8 DELEGATE EQUALITY OPERATORS 348 CREATING UNIQUE
INVOCATION LIST ITEMS 349 14.9.9 EQUALITY OPERATORS AND NULLABLE TYPES
350 14.9.10 IS OPERATOR 350 14.9.11 AS OPERATOR 351 IS AND AS IGNORE
USER-DEFINED CONVERSIONS 352 14.10 LOGICAL OPERATORS 353 14.10.1 INTEGER
LOGICAL OPERATORS 353 EXTRA BITS 354 BIT BUCKETS 354 14.10.2 ENUMERATION
LOGICAL OPERATORS 354 14.10.3 BOOLEAN LOGICAL OPERATORS 355 FORGOTTEN
LONG-CIRCUITING OPERATORS 355 14.10.4 THE BOOL? LOGICAL OPERATORS 355
14.11 CONDITIONAL LOGICAL OPERATORS 356 14.11.1 BOOLEAN CONDITIONAL
LOGICAL OPERATORS 356 14.11.2 USER-DEFINED CONDITIONAL LOGICAL OPERATORS
357 TRUE/FALSE OVERLOADING 357 14.12 THE NULL COALESCING OPERATOR 358
SUBTLE INTERACTION WITH IMPLICIT CONVERSIONS 358 14.13 CONDITIONAL
OPERATOR 360 14.14 ASSIGNMENT OPERATORS 360 14.14.1 SIMPLE ASSIGNMENT
361 14.14.2 COMPOUND ASSIGNMENT 363 14.14.3 EVENT ASSIGNMENT 364 14.15
EXPRESSION 364 14.16 CONSTANT EXPRESSIONS 364 EXPRESSIONS CAN BE
CONSTANT 365 COMPILE TIME CONSTANT EVALUATION 366 DIVIDE BY ZERO ALWAYS
THROWS 366 14.17 BOOLEAN EXPRESSIONS 367 15 STATEMENTS 15.1 368 END
POINTS AND REACHABILITY 368 FLOW-ANALYSIS VS. UNSIGNED TYPES 369 15.2
BLOCKS 370 15.2.1 STATEMENT LISTS 371 15.3 THE EMPTY STATEMENT 371 15.4
LABELED STATEMENTS 372 15.5 DECLARATION STATEMENTS 372 15.5.1 LOCAL
VARIABLE DECLARATIONS 373 15.5.2 LOCAL CONSTANT DECLARATIONS 373 15.6
EXPRESSION STATEMENTS 374 15.7 SELECTION STATEMENTS 375 15.7.1 THE IF
STATEMENT 375 15.7.2 THE SWITCH STATEMENT 376 SWITCHING ON A STRING 376
SWITCHING ON NULLABLES... 377 ET TU, MONO? 378 INDEPENDENT, WITHIN
LIMITS 380 SWITCH SECTION REORDERING 382 BAD SWITCH IN A BAD SWITCH 382
15.8 15.8.1 15.8.2 15.8.3 ITERATION STATEMENTS 382 THE WHILE STATEMENT
382 THE DO STATEMENT 383 THE FOR STATEMENT 383 ITERATION COUNT NOT FIXED
384 15.8.4 THE FOREACH STATEMENT GETENUMERATORO SELECTION 386 385 XVI
CONTENTS WHY IS THE ITERATION VARIABLE READ-ONLY? 387 SUBTLE CHANGE DUE
TO ANONYMOUS METHODS 387 IMPLICATIONS OF MOVENEXTO 389 ITERATION
VARIABLE: READ-ONLY != READONLY 389 15.9 JUMP STATEMENTS 390 15.9.1 THE
BREAK STATEMENT 391 15.9.2 THE CONTINUE STATEMENT 392 15.9.3 THE GOTO
STATEMENT 392 15.9.4 THE RETUM STATEMENT 394 15.9.5 THE THROW STATEMENT
394 NULL * NULLREFERENCE EXCEPTION 395 PLUG-IN STYLE EXCEPTION
HANDLING 395 SPOT THE DIFFERENCE 396 15.10 THE TRY STATEMENT 397
POSSIBLE SECURITY VULNERABILITY 398 VARIETY IS THE SPIEE OF LIFE 399 WHY
IS THE EXCEPTION VARIABLE NAME OPTIONAL? 399 RATIONALE: WHY IS JUMPING
OUT OF A FINALLY BLOCK FORBIDDEN? 400 UNSTOPPABLE EXCEPTIONS? 401
SOMETIMES OTHER CODE RUNS BEFORE FINALLY 402 15.11 THE CHECKED AND
UNCHECKED STATEMENTS 403 NESTED UN/CHECKING? 404 15.12 THE LOCK
STATEMENT 404 LOCK THREAD SAFETY? 405 LOCK SAFETY 406 15.13 THE USING
STATEMENT 406 RATIONALE: DESIGNING FOR NONMEMORY RESOURCES 407 REDUX:
ONE IMPLEMENTATION S TREASURE IS ANOTHER S GARBAGE 410 15.14 THE YIELD
STATEMENT 411 YIELD SYNTAX? 413 16 NAMESPACES 414 16.1 COMPILATION UNITS
COMPILATION-UNIT MISNOMER CLASS LIBRARIES 414 414 415 16.2 16.3 16.4
16.4.1 NAMESPACE DECLARATIONS 16.4.2 16.5 16.6 16.7 17 CLASSES 17.1 415
EXTERN ALIAS DIRECTIVES 416 EXTERN ALIAS IMPLIED FLEXIBILITY 417 USING
DIRECTIVES 417 USING ALIAS DIRECTIVES 418 USING ALIAS CONSTRAINTS 422
USING ALIAS REORDERING 423 USING NAMESPACE DIRECTIVES 423 OUCH, IT BIT
ME! 425 INTERCEPTING CALLS 427 NAMESPACE MEMBERS 428 TYPE DECLARATIONS
428 QUALIFIED ALIAS MEMBER 429 432 CLASS DECLARATIONS 432 TRAILING
SEMICOLONS 432 17.1.1 CLASS MODIFIERS 432 17.1.1.1 ABSTRACT CLASSES 433
ABSTRACT + OVERRIDE == REDUNDANT? 434 ABSTRACT + OVERRIDE != REDUNDANT
434 17.1.1.2 SEALED CLASSES 435 17.1.1.3 STATIC CLASSES 435 SOME BUGS
LEAD TO FEATURES 436 17.1.2 CLASS BASE SPEEIFICATION POSITIONAL
INHERITANCE NOTATION 437 17.1.2.1 BASE CLASSES 438 17.1.2.2 INTERFACE
IMPLEMENTATIONS 439 17.1.3 CLASS BODY 440 437 XVII 17.1.4 PARTIAL
DECLARATIONS 440 DIVIDE AND CONFUSE... 440 BUT SOMETIMES USEFUL 441 17.2
CLASS MEMBERS 443 MINOR JAVA DIFFERENCE 444 17.2.1 INHERITANCE 446
17.2.2 THE NEW MODIFIER 447 17.2.3 ACCESS MODIFIERS 447 ABSENT MODIFIER
!= DEFAULT MODIFIER 447 17.2.4 CONSTITUENT TYPES 448 17.2.5 STATIC AND
INSTANCE MEMBERS 448 NO ACCESS TO STATIC MEMBERS THROUGH INSTANCE
EXPRESSIONS 448 RATIONALE: INSTANCE METHOD CALL SEMANTICS 449 17.2.6
NESTED TYPES 451 DELEGATES AND ENUMS ARE TYPES TOO 451 17.2.6.1 FULLY
QUALIFIED NAME 452 17.2.6.2 DECLARED ACCESSIBILITY 452 17.2.6.3 HIDING
452 17.2.6.4 THIS ACCESS 453 SIMULATING JAVA-STYLE INNER CLASSES 454
17.2.6.5 ACCESS TO PRIVATE AND PROTECTED MEMBERS OF THE CONTAINING TYPE
455 ACCESS CLARIFICATION 456 OLDER C++ DIFFERENCE 456 17.2.7 RESERVED
MEMBER NAMES 457 17.2.7.1 MEMBER NAMES RESERVED FOR PROPERTIES 457
NEUTRAL, BUT NOT AGNOSTIC 457 THE MEANING OF RESERVED 458 17.2.7.2
MEMBER NAMES RESERVED FOR EVENTS 459 17.2.7.3 MEMBER NAMES RESERVED FOR
INDEXERS 459 INDEXER NAMES ON CLI 459 17.2.7.4 MEMBER NAMES RESERVED FOR
FINALIZERS 460 17.3 CONSTANTS 460 CONSTANT REFERENCES DO NOT TRIGGER
STATIC INITIALIZATION 460 HAVING NOTHING MIGHT BE USEFUL 461 17.4 FIELDS
462 17.4.1 STATIC AND INSTANCE FIELDS 464 17.4.2 READONLY FIELDS 464
READONLY YET MODIFIABLE 464 17.4.2.1 USING STATIC READONLY FIELDS FOR
CONSTANTS 464 17.4.2.2 VERSIONING OF CONSTANTS AND STATIC READONLY
FIELDS 465 17.4.3 VOLATILE FIELDS 465 EVOLUTION OF VOLATILE 466
UNREALISTIC OPTIMISM REDUX 467 17.4.4 FIELD INITIALIZATION 468 17.4.5
VARIABLE INITIALIZERS 468 17.4.5.1 STATIC FIELD INITIALIZATION 469
STATIC FIELDS MAY NEVER BE INITIALIZED 471 17.4.5.2 INSTANCE FIELD
INITIALIZATION 471 RATIONALE: WHY FIELD INITIALIZERS CANNOT REFERENCE
INSTANCE FIELD 472 UNABLE TO CREATE INNER OBJECTS 472 17.5 METHODS 472
WHY NO THROW SPECIFICATIONS? 474 17.5.1 METHOD PARAMETERS 475 17.5.1.1
VALUE PARAMETERS 476 17.5.1.2 REFERENCE PARAMETERS 477 A ROUND PEG IN A
SQUARE HOLE... 477 17.5.1.3 OUTPUT PARAMETERS 479 17.5.1.4 PARAMETER
ARRAYS 480 PARAMS ARRAYS CAN BE NULL 481 IS THE PARAMS KEYWORD NEEDED?
483 XV1U CONTENTS 488 488 490 491 492 17.9.1 17.9.2 17.9.3 17.5.2 STADE
AND INSTANCE METHODS 484 17.5.3 VIRTUAL METHODS 484 INSTANCE METHODS ARE
NONVIRTUAL BY DEFAULT 485 NON-VIRTUAL CALLING OF VIRTUAL METHODS 486
INVOCATION BY COMPILE-TIME AND RUN-TIME TYPE 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 493 FOREIGN BODIES 493 17.5.9 METHOD OVERLOADING 494
17.6 PROPERTIES 494 A PROPERTY CANNOT BE A REF OR OUT PARAMETER 495 THE
ACCESSORS OF A PROPERTY CANNOT BE NAMED 495 17.6.1 STATIC AND INSTANCE
PROPERTIES 496 17.6.2 ACCESSORS 496 MORE FOREIGN BODIES 497 VALUE HIDING
IN AN ACCESSOR 497 THE MOST FREQUENTLY REQUESTED NEW FEATURE 505 17.6.3
VIRTUAL, SEALED, OVERRIDE, AND ABSTRACT ACCESSORS 505 17.7 EVENTS 507
EXTERNALLY EVENTS ARE WRITE-ONLY 508 17.7.1 FIELD-LIKE EVENTS 509 DO
NOTHING DELEGATE 510 EVENT -= VS. += 511 NON-THREAD-SAFE STRUET EVENTS
514 17.7.2 EVENT ACCESSORS 515 CUSTOM EVENT HANDLER SEMANTICS 517 17.7.3
STATIC AND INSTANCE EVENTS 517 17.7.4 VIRTUAL, SEALED, OVERRIDE, AND
ABSTRACT ACCESSORS 517 17.8 INDEXERS 518 NO STATIC INDEXERS 519 NAMED
INDEXERS 522 17.8.1 INDEXER OVERLOADING 523 17.9 OPERATORS 523 THE BEST
LAID PLANS OF MICE AND MEN.... 524 BEDFELLOWS: OPERATORS AND STRUETS 525
UNARY OPERATORS 525 BINARY OPERATORS 526 CONVERSION OPERATORS 527
INDIRECT IMPLICIT CONVERSION TO AN INTERFACE 528 17.10 INSTANCE
CONSTRUETORS 529 530 17.10.1 CONSTRUCTOR INITIALIZERS INFINITE RECURSION
NOT ERRONEOUS 531 17.10.2 INSTANCE VARIABLE INITIALIZERS 531 17.10.3
CONSTRUCTOR EXECUTION 532 RATIONALE: HELD INITIALIZATION BEFORE BASE
CONSTRUCTOR INVOCATION 534 17.10.4 DEFAULT CONSTRUETORS 535 17.10.5
PRIVATE CONSTRUETORS 535 17.10.6 OPTIONAL INSTANCE CONSTRUCTOR
PARAMETERS 536 17.11 STATIC CONSTRUETORS 536 NO ACCESS SPEEIFIER; NO
PARAMETER 537 TRIGGER ONE, TRIGGER ALL 537 CONSTANTS ARE NOT
REFERENCED 538 WHICH STATIC CONSTRUCTOR IS TRIGGERED? 538
INDETERMINATELY DETERMINISTIC 541 17.12 FINALIZERS 542 C++ DESTRUETORS
VERSUS C# FINALIZERS 542 THWARTING A FINALIZER 543 THWARTING A FINALIZER
ON THE CLI 544 FINALIZER ISSUES 545 CONTENTS XIX FINAL DEADLOCK 545
ERRONEOUS DETAILS 546 18 STRUCTS 547 FREEDOM OF ALLOCATION 547 HEAP
ALLOCATION REQUIRED 547 UNION CITY BLUES 548 PREMATURE OPTIMIZATION 549
DANGER, UXB! 550 18.1 STRUCT DECLARATIONS 551 18.1.1 STRUCT MODIFIERS
552 18.1.2 STRUCT INTERFACES 552 18.1.3 STRUCT BODY 552 18.2 STRUCT
MEMBERS 552 18.3 CLASS AND STRUCT DIFFERENCES 553 READONLY VALUE-TYPE
FIELDS 553 18.3.1 VALUE SEMANTICS 554 STRUCT LAYOUT CYCLES 555 STRUCT
EQUALITY CONTRACTS 556 18.3.2 INHERITANCE 557 18.3.3 ASSIGNMENT 557
18.3.4 DEFAULT VALUES 557 WHY DO STRUCTS ALWAYS HAVE A DEFAULT
CONSTRUCTOR? 558 18.3.5 BOXING AND UNBOXING 559 18.3.6 MEANING OF THIS
559 18.3.7 FIELD INITIALIZERS 559 18.3.8 CONSTRUCTORS 560 DEFLNITE
ASSIGNMENT INSIDE A STRUCT CONSTRUCTOR 561 NON-DYNAMIC ALLOCATION USING
NEW 561 18.3.9 FINALIZERS 561 WHY NO ~S() IN STRUCT TYPE S? 561 18.3.10
STATIC CONSTRUCTORS 561 STATIC CONSTRUCTOR ROULETTE 562 19 ARRAYS 564
19.1 ARRAY TYPES 564 19.1.1 THE SYSTEM.ARRAY TYPE 565 19.2 ARRAY
CREATION 565 19.3 ARRAY ELEMENT ACCESS 565 FOREACH: SIMPLER AND FASTER
565 19.4 ARRAY MEMBERS 566 ARRAYS AND VECTORS ON THE CLI 566 19.5 ARRAY
COVARIANCE 567 19.6 ARRAYS AND THE GENERIC ILIST INTERFACE 568 19.7
ARRAY INITIALIZERS 568 BRACE DEPTH MUST EQUAL ARRAY DIMENSION 570 20
INTERFACES 571 20.1 INTERFACE DECLARATIONS 571 PARTIAL INTERFACES? 571
20.1.1 INTERFACE MODIFIERS 571 20.1.2 BASE INTERFACES 572 DIFFERENT
INHERITANCE 573 20.1.3 INTERFACE BODY 573 20.2 INTERFACE MEMBERS 573
20.2.1 INTERFACE METHODS 575 20.2.2 INTERFACE PROPERTIES 575 20.2.3
INTERFACE EVENTS 575 20.2.4 INTERFACE INDEXERS 576 20.2.5 INTERFACE
MEMBER ACCESS 576 20.3 FUUY QUALIFIED INTERFACE MEMBER NAMES 578 20.4
INTERFACE IMPLEMENTATIONS 579 INTERFACES IMPLEMENTED THROUGH THE BASE
CLASS 579 20.4.1 EXPLICIT INTERFACE MEMBER IMPLEMENTATIONS 580 EXCESS
ACCESSORS NOT ALLOWED IN EXPLICIT INTERFACE MEMBER IMPLEMENTATION 581
SIMULATING RETURN TYPE COVARIANCE 582 PARAMS ODDITY 583 CONTENTS 20.4.2
INTERFACE MAPPING 583 23 MORPHING NON-VIRTUAL METHODS 585 INAECURATE
ASSERTION 586 20.4.3 INTERFACE IMPLEMENTATION INHERITANCE 588 ERRATUM?
588 MEANING OF IMPLEMENTS 588 20.4.4 INTERFACE RE-IMPLEMENTATION 590
ORIGINAL IMPLEMENTATION INACCESSIBLE 591 20.4.5 ABSTRACT CLASSES AND
INTERFACES 593 ABSTRACT CLASS INTERFACE ALTERNATIVES 593 ENUMS 596 ENUMS
ARE INTEGRAL TYPES 596 21.1 ENUM DECLARATIONS 597 WHY NO CHAR UNDERLYING
TYPE? 598 21.2 ENUM MODIFIERS 598 21.3 ENUM MEMBERS 598 SECOND-CLASS
CITIZENS 599 TYPE OF AN ENUM MEMBER 599 ENUM ALTERNATIVES 601 21.4 THE
SYSTEM.ENUM TYPE 602 21.5 ENUM VALUES AND OPERATIONS 603 OPERATIONS ON
ENUMS 603 DELEGATES 604 22.1 DELEGATE DECLARATIONS 604 22.2 DELEGATE
INSTANTIATION 606 CREATION DOES NOT TRIGGER STATIC INITIALIZATION 607
DELEGATES FOR VALUE TYPE INSTANCE METHODS 608 THEC#PIMPERNEL... 609 22.3
DELEGATE INVOCATION 609 EXCEPTIONS 612 EXCEPTIONS NOT ADVISED AS CONTROL
FLOW 612 23.1 CAUSES OF EXCEPTIONS 612 ASYNCHRONOUS EXCEPTIONS 613
UNEXPECTED EXCEPTION 613 23.2 THE SYSTEM.EXCEPTION CLASS 613 OPTIONAL
INNEREXCEPTION 613 A GOOD IDEA IN THEORY, BUT NOT IN PRACTICE 614 23.3
HOW EXCEPTIONS ARE HANDLED 614 HERE BE DRAGONS 615 23.4 COMMON EXCEPTION
CLASSES 615 GENTEEL EXCEPTION CLASSES? 616 ATTRIBUTES 617 24.1 ATTRIBUTE
CLASSES 617 SUFFIX OMISSION CLARIFICATION 617 24.1.1 ATTRIBUTE USAGE 618
24.1.2 POSITIONAL AND NAMED PARAMETERS 619 24.1.3 ATTRIBUTE PARAMETER
TYPES 620 24.2 ATTRIBUTE SPEEIFICATION 620 RETURN VS. @RETURN 622
SPEEIFICATION OMISSION 625 MULTIPLE DECLARATION UNCLARITY 626 24.3
ATTRIBUTE INSTANCES 627 24.3.1 COMPILATION OF AN ATTRIBUTE 627
CONSTRUCTOR NOT CALLED AT COMPILE-TIME 628 24.3.2 RUN-TIME RETRIEVAL OF
AN ATTRIBUTE INSTANCE 628 REFLECTION NOT PART OF C# STANDARD 629 23 24
XXI 24.4 RESERVED ATTRIBUTES 629 24.4.1 THE ATTRIBUTEUSAGE ATTRIBUTE 629
ATTRIBUTEUSAGE AND PARTIAL COMPILE-TIME CHECKS 629 24.4.2 THE
CONDITIONAL ATTRIBUTE 630 24.4.2.1 CONDITIONAL METHODS 630 DERIVED
SURPRISES 630 24.4.2.2 CONDITIONAL ATTRIBUTE CLASSES 634 24.4.3 THE
OBSOLETE ATTRIBUTE 635 WHAT ERROR PARAMETER? 635 REALLY OBSOLETE 635
GENERICS 637 NOT SEPARATE, JUST PRAGMATIC 637 C# GENERICS COMPARED TO
ADA, C++, HASKEIL, JAVA 1.5... 637 25.1 GENERIC CLASS DECLARATIONS 639
NO TYPE PARAMETERS IN CONSTRUCTOR DECLARATIONS, BUT TYPE ARGUMENTS IN
CONSTRUCTOR INVOCATIONS 639 OVERLOADING ON NUMBER OF TYPE PARAMETERS 640
25.1.1 TYPE PARAMETERS 640 NULL COMPARISON DESPITE NO CONVERSION 641
25.1.2 THE INSTANCE TYPE 642 25.1.3 MEMBERS OF GENERIC CLASSES 642
25.1.4 STATIC FIELDS IN GENERIC CLASSES 643 NON-IDENTICAL TWINS 643
25.1.5 STATIC CONSTRUCTORS IN GENERIC CLASSES 644 25.1.6 ACCESSING
PROTECTED MEMBERS 645 25.1.7 OVERLOADING IN GENERIC CLASSES 645
CLARIFICATIONS 646 25.1.8 PARAMETER ARRAY METHODS AND TYPE PARAMETERS
646 25.1.9 OVERRIDING AND GENERIC CLASSES 647 25.1.10 OPERATORS IN
GENERIC CLASSES 647 NO OPERATORS ON CONSTRUCTED TYPE 648 IGNORED
AMBIGUITY 649 25.1.11 NESTED TYPES IN GENERIC CLASSES 650 THINKING
GENERICALLY: CONTAINERS 651 25.2 GENERIC STRUCT DECLARATIONS 653
INFINITE CHAINS OF CONSTRUCTED TYPES 653 25.3 GENERIC INTERFACE
DECLARATIONS 654 25.3.1 UNIQUENESS OF IMPLEMENTED INTERFACES 654 25.3.2
EXPLICIT INTERFACE MEMBER IMPLEMENTATIONS 655 25.4 GENERIC DELEGATE
DECLARATIONS 656 GENERIC FUNCTION TYPES 657 25.5 CONSTRUCTED TYPES 657
25.5.1 TYPE ARGUMENTS 658 25.5.2 OPEN AND CLOSED TYPES 659 25.5.3 BASE
CLASSES AND INTERFACES OF A CONSTRUCTED TYPE 659 25.5.4 MEMBERS OF A
CONSTRUCTED TYPE 660 25.5.5 ACCESSIBILITY OF A CONSTRUCTED TYPE 661
25.5.6 CONVERSIONS 661 25.5.7 USING ALIAS DIRECTIVES 662 ALIASES DO NOT
TAKE TYPE PARAMETERS 662 25.6 GENERIC METHODS 662 25.6.1 GENERIC METHOD
SIGNATURES 663 25.6.2 VIRTUAL GENERIC METHODS 663 25.6.3 CALLING GENERIC
METHODS 665 POLYMORPHIE RECURSION 666 25.6.4 INFERENCE OF TYPE ARGUMENTS
666 SPECIFICATION BUG 668 PARAMETER ARRAYS 668 LIMITED INFERENCE 669
CONTENTS 25.6.5 USING A GENERIC METHOD WITH A DELEGATE 669 FROM GENERIC
METHOD TO DELEGATE 669 25.6.6 NO GENERIC PROPERTIES, EVENTS, INDEXERS,
OPERATORS, CONSTRUCTORS, OR FINALIZERS 670 RATIONALE: NO GENERIC
CONSTRUCTORS, OPERATORS, PROPERTIES, OR INDEXERS 670 25.7 CONSTRAINTS
672 NO NULLABLE CONSTRAINT 673 USING CONSTRAINTS TO SIMULATE JAVA
WILDCARD TYPES 674 INEFFECTIVE BASE CLASS? 676 NO NUMERIC CONSTRAINTS
678 25.7.1 SATISFYING CONSTRAINTS 680 25.7.2 MEMBER LOOKUP ON TYPE
PARAMETERS 681 25.7.3 TYPE PARAMETERS AND BOXING 681 NO CAST, NO BOX 683
INHERITED CONSTRAINTS 684 25.7.4 CONVERSIONS INVOLVING TYPE PARAMETERS
684 THINKING GENERICALLY: ALGORITHMS 685 ITERATORS 688 GROWING PAINS 688
COROUTINES ALLOWED? 689 26.1 ITERATOR BLOCKS 689 26.1.1 ENUMERATOR
INTERFACES 690 26.1.2 ENUMERABLE INTERFACES 690 26.1.3 YIELD TYPE 690
26.1.4 THIS ACCESS 690 HOW MANY ITERATORS DOES IT TAKE TO ENUMERATE? 690
ENUMERATING A DATA STRUCTURE: ITERATORS, HANDWRITTEN ENUMERATOR, OR
VISITOR STYLE? 692 26.2 ENUMERATOR OBJECTS 695 ITERATORS, FINALLY, LOCK
AND USING 695 OBSCURE ITERATOR AND FINALLY/ LOCK/USING INTERACTION 696
26.2.1 THE MOVENEXT METHOD 697 IMPLICIT YIELD BREAK AT END OF ITERATOR
BLOCK 698 26.2.2 THE CURRENT PROPERTY 698 26.2.3 THE DISPOSE METHOD 698
26.3 ENUMERABLE OBJECTS 699 26.3.1 THE GETENUMERATOR METHOD 699 26.4
IMPLEMENTATION EXAMPLE 700 ANECDOTE: ITERATOR BLOCKS, GENERIC
PARAMETERS, AND A BUG 708 27 UNSAFE CODE 709 27.1 UNSAFE CONTEXTS 709
27.2 POINTER TYPES 712 MISSING GRAMMAR RULE 713 VOLATILE POINTERS 714 A
CONFUSING C# VS. C/C++ SYNTAX DIFFERENCE 714 27.3 FIXED AND MOVEABLE
VARIABLES 715 27.4 POINTER CONVERSIONS 716 27.5 POINTERS IN EXPRESSIONS
717 27.5.1 POINTER INDIRECTION 718 27.5.2 POINTER MEMBER ACCESS 718
27.5.3 POINTER ELEMENT ACCESS 719 27.5.4 THE ADDRESS-OF OPERATOR 720 NO
POINTER-TO-VOLATILE 721 27.5.5 POINTER INCREMENT AND DECREMENT 721
27.5.6 POINTER ARITHMETIC 722 27.5.7 POINTER COMPARISON 723 27.5.8 THE
SIZEOF OPERATOR 723 27.6 THE FIXED STATEMENT 724 27.7 STACK ALLOCATION
727 THE PROGRAMMER DOES NOT ALWAYS COME FIRST 729 27.8 DYNAMIC MEMORY
ALLOCATION 729 CONTENTS XXIII GRAMMAR 732 B.4 OTHER ISSUES 768 A.1
LEXICAL GRAMMAR 732 A.L.L LINE TERMINATORS 732 A.1.2 WHITE SPACE 732
A.1.3 COMMENTS 733 A.1.4 TOKENS 733 A.1.5 UNICODE ESCAPE SEQUENCES 734
A.1.6 IDENTIFIERS 734 A.1.7 KEYWORDS 735 A.1.8 LITERAIS 735 A.1.9
OPERATORS AND PUNCTUATORS 737 A.1.10 PRE-PROCESSING DIRECTIVES 738 A.2
SYNTACTIC GRAMMAR 740 A.2.1 BASIC CONCEPTS 740 A.2.2 TYPES 741 A.2.3
VARIABLES 742 A.2.4 EXPRESSIONS 742 A.2.5 STATEMENTS 746 A.2.6 CLASSES
751 A.2.7 STRUCTS 758 A.2.8 ARRAYS 758 A.2.9 INTERFACES 759 A.2.10 ENUMS
760 A.2.11 DELEGATES 761 A.2.12 ATTRIBUTES 761 A.2.13 GENERICS 762 A.3
GRAMMAR EXTENSIONS FOR UNSAFE CODE 764 PORTABILITY ISSUES 767 B.L
UNDEFINED BEHAVIOR B.2 767 IMPLEMENTATION-DEFINED BEHAVIOR 767 C NAMING
GUIDELINES 769 NAMING GUIDELINE SUMMARY 769 D STANDARD LIBRARY 770 E
DOCUMENTATION COMMENTS 781 E.L INTRODUCTION 781 E.2 RECOMMENDED TAGS 782
E.2.1 783 E.2.2 783 E.2.3 784 E.2.4 784 E.2.5 785 E.2.6 786 E.2.7 786
E.2.8 787 E.2.9 787 E.2.10 788 E.2.11 788 E.2.12 789 E.2.13 789 E.2.14
790 E.2.15 790 E.2.16 790 E.2.17 791 E.3 PROCESSING THE DOCUMENTATION
FILE 791 E.3.1 ID STRING FORMAT 792 E.3.2 ID STRING EXAMPLES 793 E.4 AN
EXAMPLE 797 E.4.1 C# SOURCE CODE 797 E.4.2 RESULTING XML 800 F
BIBLIOGRAPHY 804 INDEX 805 B.3 UNSPECIFIED BEHAVIOR 768
|
any_adam_object | 1 |
author | Jagger, Jon Perry, Nigel Sestoft, Peter 1962- |
author_GND | (DE-588)131473476 |
author_facet | Jagger, Jon Perry, Nigel Sestoft, Peter 1962- |
author_role | aut aut aut |
author_sort | Jagger, Jon |
author_variant | j j jj n p np p s ps |
building | Verbundindex |
bvnumber | BV023802994 |
classification_rvk | ST 250 |
ctrlnum | (OCoLC)836596238 (DE-599)BVBBV023802994 |
dewey-full | 005.133 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.133 |
dewey-search | 005.133 |
dewey-sort | 15.133 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01279nam a2200349zc 4500</leader><controlfield tag="001">BV023802994</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20080827000000.0</controlfield><controlfield tag="007">t|</controlfield><controlfield tag="008">080305s2007 xx |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780123725110</subfield><subfield code="9">978-0-12-372511-0</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)836596238</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV023802994</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-11</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.133</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Jagger, Jon</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">C# annotated standard</subfield><subfield code="c">Jon Jagger ; Nigel Perry ; Peter Sestoft</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Amsterdam [u.a.]</subfield><subfield code="b">Morgan Kaufmann/Elsevier</subfield><subfield code="c">2007</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXXII, 825 S.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">C sharp</subfield><subfield code="0">(DE-588)4616843-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">C sharp</subfield><subfield code="0">(DE-588)4616843-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Perry, Nigel</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Sestoft, Peter</subfield><subfield code="d">1962-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)131473476</subfield><subfield code="4">aut</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">GBV Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017445193&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-017445193</subfield></datafield></record></collection> |
id | DE-604.BV023802994 |
illustrated | Not Illustrated |
indexdate | 2024-12-20T13:34:28Z |
institution | BVB |
isbn | 9780123725110 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-017445193 |
oclc_num | 836596238 |
open_access_boolean | |
owner | DE-11 |
owner_facet | DE-11 |
physical | XXXII, 825 S. |
publishDate | 2007 |
publishDateSearch | 2007 |
publishDateSort | 2007 |
publisher | Morgan Kaufmann/Elsevier |
record_format | marc |
spellingShingle | Jagger, Jon Perry, Nigel Sestoft, Peter 1962- C# annotated standard C sharp (DE-588)4616843-6 gnd |
subject_GND | (DE-588)4616843-6 |
title | C# annotated standard |
title_auth | C# annotated standard |
title_exact_search | C# annotated standard |
title_full | C# annotated standard Jon Jagger ; Nigel Perry ; Peter Sestoft |
title_fullStr | C# annotated standard Jon Jagger ; Nigel Perry ; Peter Sestoft |
title_full_unstemmed | C# annotated standard Jon Jagger ; Nigel Perry ; Peter Sestoft |
title_short | C# annotated standard |
title_sort | c annotated standard |
topic | C sharp (DE-588)4616843-6 gnd |
topic_facet | C sharp |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=017445193&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT jaggerjon cannotatedstandard AT perrynigel cannotatedstandard AT sestoftpeter cannotatedstandard |