■
C O N T E N T S
vi
The Third Pillar: C#’s Polymorphic Support
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Understanding Base Class/Derived Class Casting Rules
. . . . . . . . . . . . . . . . . . . 210
The Master Parent Class: System.Object
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
■
CHAPTER 7
Understanding Structured Exception Handling
. . . . . . . . . . . . . . . . . . . 219
Ode to Errors, Bugs, and Exceptions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
The Role of .NET Exception Handling
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
The Simplest Possible Example
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Configuring the State of an Exception
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
System-Level Exceptions (System.SystemException)
. . . . . . . . . . . . . . . . . . . . . 230
Application-Level Exceptions (System.ApplicationException)
. . . . . . . . . . . . . . . 231
Processing Multiple Exceptions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
The Finally Block
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Who Is Throwing What?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
The Result of Unhandled Exceptions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Debugging Unhandled Exceptions Using Visual Studio
. . . . . . . . . . . . . . . . . . . . 242
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
■
CHAPTER 8
Understanding Object Lifetime
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Classes, Objects, and References
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
The Basics of Object Lifetime
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
The Role of Application Roots
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Understanding Object Generations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
The System.GC Type
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Building Finalizable Objects
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Building Disposable Objects
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Building Finalizable and Disposable Types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Summary
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Do'stlaringiz bilan baham: