HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Essential C# 3.0 is an extremely well-written and well-organized “no-fluff” guide to C# 3.0, which will appeal to programmers at all levels of experience with C#. This fully updated edition dives deep into the new features that are revolutionizing programming, with brand new chapters covering query expressions, lambda expressions, extension methods, collection interface extensions, standard query operators, and LINQ as a whole.
Author Mark Michaelis covers the C# language in depth, and each importantconstruct is illustrated with succinct, relevant code examples. (Complete code examples are available online.) Graphical “mind maps” at the beginning of each chapter show what material is covered and how each topic relates to the whole. Topics intended for beginners and advanced readers are clearly marked.
Following an introduction to C#, readers learn about
Whether you are just starting out as a programmer, are an experienced developer looking to learn C#, or are a seasoned C# programmer interested in learning the new features of C# 3.0, Essential C# 3.0 gives you just what you need to quickly get up and running writing C# applications.
Using the C# system.io Namespace
Visit the author's website by going to mark.michaelis.net/EssentialCSharp.
Delegates and Lambda Expressions in C# 3.0
Figures xxiii
Tables xxv
Foreword xxvii
Preface xxxi
Acknowledgments xliii
About the Author xlv
Chapter 1: Introducing C# 1
Hello, World 2
Working with Variables 12
Comments 19
Chapter 2: Data Types 31
Fundamental Numeric Types 32
More Fundamental Types 40
null and void 51
Categories of Types 55
Nullable Modifier 57
Conversions between Data Types 58
Arrays 65
Chapter 3: Operators and Control Flow 83
Operators 84
Introducing Flow Control 98
Code Blocks ({}) 105
Scope 107
Boolean Expressions 108
Bitwise Operators (<<, >>, |, &, ^, ~) 114
Control Flow Statements, Continued 119
Jump Statements 130
C# Preprocessor Directives 136
Chapter 4: Methods and Parameters 147
Calling a Method 148
Declaring a Method 155
The using Directive 160
Returns and Parameters on Main() 164
Parameters 167
Recursion 174
Method Overloading 177
Basic Error Handling with Exceptions 180
Chapter 5: Classes 195
Defining and Instantiating a Class 199
Instance Fields 203
Instance Methods 205
Using the this Keyword 206
Access Modifiers 213
Properties 215
Constructors 229
Static 239
Extension Methods 249
Encapsulating the Data 250
Nested Classes 252
Partial Classes 254
Chapter 6: Inheritance 261
Derivation 262
Overriding the Base Class 272
Abstract Classes 284
Everything Ultimately Derives from System.Object 290
Verifying the Underlying Type with the is Operator 292
Conversion Using the as Operator 293
Chapter 7: Interfaces 295
Introducing Interfaces 296
Polymorphism through Interfaces 297
Interface Implementation 302
Casting between the Implementing Class and Its Interfaces 307
Interface Inheritance 308
Multiple Interface Inheritance 310
Extension Methods on Interfaces 311
Implementing Multiple Inheritance via Interfaces 313
Versioning 315
Interfaces Compared with Classes 317
Chapter 8: Value Types 321
Structs 322
Boxing 329
Enums 335
Chapter 9: Well-Formed Types 347
Overriding object Members 347
Operator Overloading 358
Referencing Other Assemblies 365
Defining Namespaces 370
XML Comments 373
Garbage Collection 377
Resource Cleanup 381
Chapter 10: Exception Handling 389
Multiple Exception Types 389
Catching Exceptions 391
General Catch Block 392
Guidelines for Exception Handling 395
Defining Custom Exceptions 397
Chapter 11: Generics 405
C# without Generics 406
Introducing Generic Types 411
Constraints 423
Generic Methods 436
Generic Internals 440
Chapter 12: Delegates and Lambda Expressions 445
Introducing Delegates 446
Anonymous Methods 456
System-Defined Delegates: Func<> 459
Lambda Expressions 460
Chapter 13: Events 479
Coding the Observer Pattern with Multicast Delegates 480
Events 495
Chapter 14: Collection Interfaces with Standard Query Operators 507
Anonymous Types and Implicit Local Variable Declaration 508
Collection Initializers 514
What Makes a Class a Collection: IEnumerable<T> 517
Standard Query Operators 523
Chapter 15: Query Expressions 555
Introducing Query Expressions 556
Query Expressions as Method Invocations 573
Chapter 16: Building Custom Collections 577
More Collection Interfaces 578
Primary Collection Classes 583
Providing an Index Operator 597
Returning Null or an Empty Collection 601
Iterators 601
Chapter 17: Reflection and Attributes 617
Reflection 618
Attributes 629
Chapter 18: Multithreading 657
Running and Controlling a Separate Thread 660
Passing Parameters to Threads 665
Thread Pooling 669
Unhandled Exceptions 670
Synchronization 672
Timers 691
Chapter 19: Multithreading Patterns 699
Asynchronous Results Pattern 700
Background Worker Pattern 714
Windows Forms 719
Chapter 20: Platform Interoperability and Unsafe Code 723
Platform Invoke 724
Pointers and Addresses 738
Chapter 21: The Common Language Infrastructure 749
Defining the Common Language Infrastructure (CLI) 750
CLI Implementations 751
C# Compilation to Machine Code 752
Runtime 755
Application Domains 760
Assemblies, Manifests, and Modules 761
Common Intermediate Language (CIL) 764
Common Type System (CTS) 764
Common Language Specification (CLS) 765
Base Class Library (BCL) 766
Metadata 766
Appendix A: Downloading and Installing the C# Compiler and the CLI Platform 771
Appendix B: Full Source Code Listings 775
Appendix C: C# 3.0 Topics 801
Index 807