IAsyncResult object properties, 308
ICloneable interface
Object.MemberwiseClone method, 95
overview, 207
ICollection interface, 207
IDE. See integrated development environment (IDE)
IDE Navigator, 142
identifiers, 24
identity compared to equivalence, 80–81
IDictionaryEnumerator enumerator, 225
IDisposable interface
Close method, 584
Disposable pattern considerations, 582
Disposable pattern overview, 581–582
Dispose method. See Dispose method
disposing inner objects, 586–587
overview, 577–580
reusable objects, 585
IEnumerable interface, 207
IEnumerable<T> interface
generic enumerable objects, 279
Yield statements, 284
IEnumerator interface, 278
IEnumerator<T> interface, 279–280
IErrorInfo to COMException mapping, 342
ILASM. See Intermediate Language Assembler (ILASM)
ILDASM. See Intermediate Language Disassembler (ILDASM)
IList interface
ArrayList collection, 215
members, 208
overview, 208
Immediate window
aliases, 470–471
IntelliSense, 469
limitations, 469
navigating, 469
overview, 468
implements keyword, 421
Imports elements, 167
Increment (++) operator overloading, 632
indexers
abstract, 106
arrays, compared to, 209
generics, 238
overloading, 210
overview, 208
properties, compared to, 208–209
sample code, 209
sealed, 107
syntax, 209
inheritance. See also classes
abstract, 106–107
access modifiers, 98–99
attributes, 130–131
base types, 83
casting, 125–130
class diagrams, 149
class hierarchies, 149–151
class refinement, 81
composition, 83
constructors, 108–111
containment, 83
cross-language inheritance, 89
derived types, 83
destructors, 108–111
Employee class, 96
generic types, 257–260
implementing, 98–99
interfaces. See interfaces
MSIL programming, 420–421
nested types, 259–260
new modifier, 102–105
operators, 128–130
overload vs. override, 100
override keyword, 99
overriding events, 101
overriding methods, 258–259
overriding overview, 99–101
overview, 83
polymorphism. See polymorphism
sample code, 88–89
sealed, 107–108
syntax, 98
System.Object, 90
terminology, 87
virtual keyword, 99
Visual Studio 2005, 149–151
inheritance polymorphism, 236
instance constructors, 393
instance fields, 52
instance members, 50
instructions, MSIL
arithmetic instructions, 429–433
boxing, 419
branching, 423–427
call instructions, 426
comparative branching instructions, 424
compare instructions, 423
list of, 433
load method, 415–417
overview, 414
short forms, 414–415
store method, 415–417
integer constraints, 251
integrated development environment (IDE)
adding references, 141
AutoRecover, 143
Community menu, 137
creating projects, 137–138
Data menu, 141–142
Data Source Configuration Wizard, 141
IDE Navigator, 142
managing windows, 142
overview, 136
Solution Explorer, 138–141
Start Page, 136–137
IntelliSense
Immediate window, 469
inserting code snippets, 162
overview, 156–158
interface constraints, 252
interfaces
abstract classes, compared to, 112
attributes, 112
constraints, 252–253
explicit interface member implementation, 115–117
generic types, 266–267
ICloneable, 207
ICollection, 207
IEnumerable, 207
IList, 208
implementing, 113–114
overview, 111–113, 421–422
polymorphism, 123
reimplementation, 119
syntax, 112
System.Array, 189
Intermediate Language Assembler (ILASM)
overview, 403
roundtripping, 436
Intermediate Language Disassembler (ILDASM)
command-line options, 362–363
elements, 362
metadata, 359, 360–364
Interop marshaler, 611
introduction to Microsoft Visual C# 2005, 3–4, xxi–xxii
invocation
asynchronous, 307
dynamic, 373–378
lists for multicast delegates, 298, 303–306
Invoke method, 300
is operator, 128
IsGeneric Boolean property, 383
IsGenericMethod property, 383
IsGenericTypeDefinition Boolean property, 383
ItemGroup elements, 177
iterative statements, 41–44
iterator blocks, 285
iterators
internals, 286–287
iterator blocks, 285–286
nested classes, 286
overview, 269–270, 283
sample code (complex iterations), 290
sample code (dual iteration), 287–288
sample code (overview), 287
sample code (reverse iteration), 288
sample code (temporary collections), 289
Yield statements, 284–285