没有合适的资源?快使用搜索试试~ 我知道了~
首页C#2008详解:全美经典教材,实战与案例解析
C#2008详解:全美经典教材,实战与案例解析
需积分: 3 23 下载量 199 浏览量
更新于2024-08-02
收藏 10.19MB PDF 举报
《详解C# 2008:全美经典教材》是由Daniel Solis编著的一本详尽的C#编程指南,该书旨在帮助读者深入理解和掌握C#语言在.NET框架下的应用。作为The EXPERT's Voice®系列的一部分,它不仅提供理论知识,还配以丰富的插图,使得复杂概念更易于理解。
书中涵盖的内容包括C# 2008语言特性、类与对象、接口与继承、异常处理、集合框架、文件I/O操作、网络编程、多线程编程、数据库访问等核心主题。作者以实用性和实战为导向,通过实例演示展示了如何将理论知识转化为实际代码,确保读者能够迅速上手并提升编程技能。
版权方面,所有内容受Daniel Solis和出版商版权保护,未经许可,禁止任何形式的复制或传播,无论是电子还是机械方式,如复印、录音,或者通过任何信息存储和检索系统。本书有硬拷贝和电子版两种版本,分别对应不同的ISBN号码,印制和装订均在美国完成。
书中还特别提到了Lead Editor Matthew Moodie、Technical Reviewer Christophe Nasarre以及多位编辑的参与,这表明了作者对内容质量的严谨把控和专业团队的合作。这些专家级的人物对书中的技术内容进行了严格的审查和校对,确保了信息的准确性和权威性。
总体而言,《详解C# 2008》是一本适合C#初学者和进阶开发者深入学习的专业书籍,无论是希望通过系统学习提升C#技能的程序员,还是希望了解C# 2008新特性的开发者,都能从中受益匪浅。通过阅读这本书,读者可以建立起坚实的C#基础,并熟悉最新的编程范式和实践,从而更好地应对实际项目挑战。
xiv
■CONTENTS
Strongly Named Assemblies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Creating a Strongly Named Assembly. . . . . . . . . . . . . . . . . . . . . . . . 278
Private Deployment of an Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Shared Assemblies and the GAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Installing Assemblies into the GAC. . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Side-by-Side Execution in the GAC . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Delayed Signing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
■CHAPTER 11 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
What Are Exceptions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
The try Statement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Handling the Exception. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
The Exception Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
The catch Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Examples Using Specific catch Clauses . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
The catch Clauses Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
The finally Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Finding a Handler for an Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Searching Further. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
General Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Example of Searching Down the Call Stack . . . . . . . . . . . . . . . . . . . 297
Throwing Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Throwing Without an Exception Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
■CHAPTER 12 Structs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
What Are Structs?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Structs Are Value Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Assigning to a Struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Constructors and Destructors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Instance Constructors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Static Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Summary of Constructors and Destructors . . . . . . . . . . . . . . . . . . . 309
Field Initializers Are Not Allowed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Structs Are Sealed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Boxing and Unboxing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Structs As Return Values and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . 311
Additional Information About Structs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
9543.book Page xiv Wednesday, January 16, 2008 3:13 PM
■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
xvi
■CONTENTS
■CHAPTER 15 Delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
What Is a Delegate? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Methods in the Invocation List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Declaring the Delegate Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Creating the Delegate Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Assigning Delegates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Combining Delegates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Adding Methods to Delegates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Removing Methods from a Delegate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Invoking a Delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Delegate Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Invoking Delegates with Return Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Invoking Delegates with Reference Parameters . . . . . . . . . . . . . . . . . . . . 368
Anonymous Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Using Anonymous Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Syntax of Anonymous Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Scope of Variables and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Lambda Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
■CHAPTER 16 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Events Are Like Delegates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
An Event Has a Private Delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Overview of Source Code Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Declaring an Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
An Event Is a Member . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
The Delegate Type and EventHandler . . . . . . . . . . . . . . . . . . . . . . . . 384
Raising an Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Subscribing to an Event. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Removing Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Standard Event Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Using the EventArgs Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Passing Data by Extending EventArgs . . . . . . . . . . . . . . . . . . . . . . . . 390
Using the Custom Delegate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
The MyTimerClass Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Event Accessors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
9543.book Page xvi Wednesday, January 16, 2008 3:13 PM
■CONTENTS
xvii
■CHAPTER 17 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
What Is an Interface? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Example Using the IComparable Interface . . . . . . . . . . . . . . . . . . . . 399
Declaring an Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Implementing an Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Example with a Simple Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
An Interface Is a Reference Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Using the as Operator with Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Implementing Multiple Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Implementing Interfaces with Duplicate Members . . . . . . . . . . . . . . . . . . 410
References to Multiple Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
An Inherited Member As an Implementation . . . . . . . . . . . . . . . . . . . . . . . 414
Explicit Interface Member Implementations. . . . . . . . . . . . . . . . . . . . . . . . 415
Accessing Explicit Interface Member Implementations . . . . . . . . . 418
Interfaces Can Inherit Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Example of Different Classes Implementing an Interface . . . . . . . 420
■CHAPTER 18 Conversions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
What Are Conversions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Implicit Conversions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Explicit Conversions and Casting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Casting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Types of Conversions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Numeric Conversions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Implicit Numeric Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Overflow Checking Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Explicit Numeric Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Reference Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Implicit Reference Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Explicit Reference Conversions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Valid Explicit Reference Conversions. . . . . . . . . . . . . . . . . . . . . . . . . 440
Boxing Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Boxing Creates a Copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Unboxing Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
The Unboxing Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
9543.book Page xvii Wednesday, January 16, 2008 3:13 PM
xviii
■CONTENTS
User-Defined Conversions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Constraints on User-Defined Conversions . . . . . . . . . . . . . . . . . . . . 446
Example of a User-Defined Conversion. . . . . . . . . . . . . . . . . . . . . . . 447
Evaluating User-Defined Conversions . . . . . . . . . . . . . . . . . . . . . . . . 449
Example of a Multi-Step User-Defined Conversion . . . . . . . . . . . . . 449
The is Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
The as Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
■CHAPTER 19 Generics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
What Are Generics? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
A Stack Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Generics in C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Continuing with the Stack Example . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Generic Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Declaring a Generic Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Creating a Constructed Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Creating Variables and Instances. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
The Stack Example Using Generics . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Comparing the Generic and Non-Generic Stack . . . . . . . . . . . . . . . 465
Constraints on Type Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Where Clauses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Constraint Types and Order. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Generic Structs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Generic Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
An Example Using Generic Interfaces . . . . . . . . . . . . . . . . . . . . . . . . 471
Generic Interface Implementations Must Be Unique. . . . . . . . . . . . 472
Generic Delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Another Generic Delegate Example . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Generic Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Declaring a Generic Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
Invoking a Generic Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Example of a Generic Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Extension Methods with Generic Classes. . . . . . . . . . . . . . . . . . . . . . . . . . 481
9543.book Page xviii Wednesday, January 16, 2008 3:13 PM
剩余349页未读,继续阅读
108 浏览量
2009-12-17 上传
2009-11-14 上传
2009-12-27 上传
153 浏览量
noom2000
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 行业文档-设计装置-一种平板式太阳能导热接头.zip
- PullelaSneha_152634_PHASE3
- windows server 2012无法远程登录补丁.zip
- MapMatching-new2.zip
- 布达
- matlab确定眼睛的代码-MSc_Robotics_Project:MSc_Robotics_Project
- challenge05-ignite
- 行业文档-设计装置-一种具有储藏功能的漏斗.zip
- imobiliaria:网站desenvolvido para umaimobiliária
- KepServer可以将任何工业设备的通信协议转换为opc协议,然后用OPCAutomation进行上位机数据读写。
- RouteConverter-开源
- beginner_tutorials.tar.gz
- 非调试版本-C Runtime Library11.0.51106.1
- matlab确定眼睛的代码-PupilDetection_DLC:使用训练有素的DLC网络检测瞳Kong+确定直径,位置并从结果中闪烁
- gowork:golang中的任务分配管理系统
- 行业文档-设计装置-香蕉茎纤维复合牛皮纸的制备方法.zip
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功