没有合适的资源?快使用搜索试试~ 我知道了~
首页《Illustrated C# 2008》:清晰、直观的C#编程入门指南
《Illustrated C# 2008》:清晰、直观的C#编程入门指南
需积分: 1 0 下载量 101 浏览量
更新于2024-07-18
收藏 14.67MB PDF 举报
"Apress.Illustrated.C#"是一本专为学习者设计的C#编程语言教程,由Daniel Solis编著,适用于.NET框架下的C#2008版本。这本书的宗旨在于清晰、精炼且视觉化地传授C#的基础知识和编程技巧,使读者能够快速理解和掌握这门强大的编程语言。 书中强调了实践与理论相结合的学习方式,通过丰富的插图和直观的示例,帮助读者深入理解概念。版权信息表明,未经版权所有者和出版社事先书面许可,任何形式的复制或传播都受到严格保护。本书提供两种版本,纸质版(ISBN-13: 978-1-59059-954-9, ISBN-10: 1-59059-954-3)和电子版(ISBN-13: 978-1-4302-0574-6, ISBN-10: 1-4302-0574-1),适合不同阅读习惯的读者。 这本书由Matthew Moodie担任主编辑,而Christophe Narre则提供了技术审阅,确保了内容的专业性和准确性。编辑团队由多位行业专家组成,包括但不限于Clay Andres、Steve Anglin、Ewan Buckingham等,他们共同确保了图书的质量和内容的完整性。 在编写过程中,作者注重遵循版权法规定,对商标名仅以编辑性引用的方式提及,旨在尊重和维护商标所有者的权益,而非侵犯其商标权。整本书旨在为初学者打造一个友好的学习环境,让他们在探索C#的世界时,不仅学会编程语言本身,还能培养良好的编程习惯和解决问题的能力。通过阅读"Illustrated C# 2008",读者将有机会掌握面向对象编程的核心概念,如类、方法、接口、异常处理以及如何在.NET平台上构建高效、可维护的应用程序。
资源详情
资源推荐
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
剩余725页未读,继续阅读
summitly
- 粉丝: 1
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功