■CONTENTS
xv
■CHAPTER 13 Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Setting the Underlying Type and Explicit Values . . . . . . . . . . . . . . . 316
Implicit Member Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Bit Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
The Flags Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Example Using Bit Flags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
More About Enums. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
■CHAPTER 14 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Important Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Types of Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
An Array As an Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
One-Dimensional and Rectangular Arrays . . . . . . . . . . . . . . . . . . . . . . . . . 331
Declaring a One-Dimensional Array or a Rectangular Array . . . . . 331
Instantiating a One-Dimensional or Rectangular Array . . . . . . . . . . . . . . 332
Accessing Array Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Initializing an Array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Explicit Initialization of One-Dimensional Arrays . . . . . . . . . . . . . . . 334
Explicit Initialization of Rectangular Arrays. . . . . . . . . . . . . . . . . . . . 335
Syntax Points for Initializing Rectangular Arrays . . . . . . . . . . . . . . . 335
Shortcut Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Implicitly Typed Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Putting It All Together. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Jagged Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Declaring a Jagged Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Shortcut Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Instantiating a Jagged Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Sub-Arrays in Jagged Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Comparing Rectangular and Jagged Arrays. . . . . . . . . . . . . . . . . . . . . . . . 343
The foreach Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
The Iteration Variable Is Read-Only . . . . . . . . . . . . . . . . . . . . . . . . . . 346
The foreach Statement with Multidimensional Arrays . . . . . . . . . . 347
Array Covariance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Useful Inherited Array Members. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
The Clone Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Comparing Array Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
9543.book Page xv Wednesday, January 16, 2008 3:13 PM