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# 4.0 is a well-organized,“no-fluff” guide to all versions of C# for programmers at all levels of C# experience. This fully updated edition shows how to make the most of C# 4.0’s new features and programming patterns to write code that is simple, yet powerful.
This edition contains two new chapters on parallel programming, multithreading, and concurrency, as well as extensive coverage of new C# 4.0 features: dynamic typing, variance, optional/named parameters, and many other new topics.
Mark Michaelis covers the C# language in depth, illustrating key constructs with succinct, downloadable code examples. Graphical “mind maps” at the beginning of each chapter show what material is covered and how individual topics interrelate. Topics intended for beginners and advanced readers are clearly marked, and the book includes indexes of C# versions (2.0, 3.0, and 4.0), which make it easy for readers to reference topics specific to a given release of C#.
Following an introduction to C#, readers learn about
Whether you’re just starting out, are an experienced developer moving to C#, or are a seasoned C# programmer seeking to master C# 4.0’s most valuable enhancements, Essential C# 4.0 will help you write high-quality, highly effective code.
Essential C#: An Interview with Mark Michaelis
Please visit the author's web site at http://intelliTechture.com/EssentialCSharp.
Essential C# 4.0: Delegates and Lambda Expressions
Download the sample pages (includes Chapter 12 and Index)
Contents of C# 4.0 Topics xxv
Figures xxvii
Tables xxix
Foreword xxxi
Preface xxxv
Acknowledgments xlvii
About the Author li
Chapter 1: Introducing C# 1
Hello, World 2
C# Syntax Fundamentals 4
Working with Variables 12
Console Input and Output 16
Comments 20
Managed Execution and the Common Language Infrastructure 23
C# and .NET Versioning 26
Common Intermediate Language and ILDASM 27
Summary 30
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 64
Summary 81
Chapter 3: Operators and Control Flow 83
Operators 84
Introducing Flow Control 98
Code Blocks ({}) 105
Scope and Declaration Space 107
Boolean Expressions 109
Bitwise Operators (<<, >>, |, &, ^, ~) 115
Control Flow Statements, Continued 121
Jump Statements 132
C# Preprocessor Directives 138
Summary 145
Chapter 4: Methods and Parameters 149
Calling a Method 150
Declaring a Method 157
The using Directive 161
Returns and Parameters on Main() 165
Parameters 168
Recursion 176
Method Overloading 179
Optional Parameters 182
Basic Error Handling with Exceptions 186
Summary 199
Chapter 5: Classes 201
Declaring and Instantiating a Class 205
Instance Fields 209
Instance Methods 211
Using the this Keyword 213
Access Modifiers 220
Properties 222
Constructors 236
Static Members 247
Extension Methods 256
Encapsulating the Data 258
Nested Classes 260
Partial Classes 262
Summary 267
Chapter 6: Inheritance 269
Derivation 270
Overriding the Base Class 281
Abstract Classes 293
All Classes Derive from System.Object 299
Verifying the Underlying Type with the is Operator 301
Conversion Using the as Operator 302
Summary 303
Chapter 7: Interfaces 305
Introducing Interfaces 306
Polymorphism through Interfaces 307
Interface Implementation 312
Converting between the Implementing Class and Its
Interfaces 318
Interface Inheritance 318
Multiple Interface Inheritance 321
Extension Methods on Interfaces 322
Implementing Multiple Inheritance via Interfaces 323
Versioning 326
Interfaces Compared with Classes 328
Summary 329
Chapter 8: Value Types 331
Structs 332
Boxing 339
Enums 346
Summary 356
Chapter 9: Well-Formed Types 357
Overriding object Members 357
Operator Overloading 369
Referencing Other Assemblies 377
Defining Namespaces 382
XML Comments 385
Garbage Collection 390
Resource Cleanup 393
Lazy Initialization 400
Summary 403
Chapter 10: Exception Handling 405
Multiple Exception Types 405
Catching Exceptions 407
General Catch Block 409
Guidelines for Exception Handling 411
Defining Custom Exceptions 414
Summary 419
Chapter 11: Generics 421
C# without Generics 422
Introducing Generic Types 427
Constraints 439
Generic Methods 453
Covariance and Contravariance 457
Generic Internals 463
Summary 467
Chapter 12: Delegates and Lambda Expressions 469
Introducing Delegates 470
Anonymous Methods 480
System-Defined Delegates: Func<> 483
Lambda Expressions 486
Summary 506
Chapter 13: Events 507
Coding the Observer Pattern with Multicast Delegates 508
Events 523
Summary 533
Chapter 14: Collection Interfaces with Standard Query Operators 535
Anonymous Types and Implicitly Typed Local Variables 536
Collection Initializers 543
What Makes a Class a Collection: IEnumerable<T> 546
Standard Query Operators 552
Summary 586
Chapter 15: LINQ with Query Expressions 589
Introducing Query Expressions 590
Query Expressions as Method Invocations 608
Summary 609
Chapter 16: Building Custom Collections 611
More Collection Interfaces 612
Primary Collection Classes 617
Providing an Index Operator 630
Returning Null or an Empty Collection 634
Iterators 634
Summary 650
Chapter 17: Reflection, Attributes, and Dynamic Programming 651
Reflection 652
Attributes 663
Programming with Dynamic Objects 688
Summary 699
Chapter 18: Multithreading 701
Running and Controlling a Separate Thread 706
Executing Iterations in Parallel 724
Running LINQ Queries in Parallel 734
Multithreading before .NET Framework 4 738
Unhandled Exceptions on the AppDomain 744
Summary 746
Chapter 19: Synchronization and More Multithreading Patterns 749
Synchronization 750
Timers 778
Asynchronous Programming Model 783
Asynchronous Delegate Invocation 797
Event-Based Asynchronous Pattern (EAP) 801
Background Worker Pattern 804
Windows UI Programming 809
Summary 814
Chapter 20: Platform Interoperability and Unsafe Code 815
Platform Invoke 816
Pointers and Addresses 830
Summary 839
Chapter 21: The Common Language Infrastructure 843
Defining the Common Language Infrastructure (CLI) 844
CLI Implementations 845
C# Compilation to Machine Code 847
Runtime 849
Application Domains 854
Assemblies, Manifests, and Modules 855
Common Intermediate Language (CIL) 858
Common Type System (CTS) 858
Common Language Specification (CLS) 859
Base Class Library (BCL) 860
Metadata 860
Summary 862
Appendix A: Downloading and Installing the C# Compiler and the CLI
Platform 865
Appendix B: Full Source Code Listings 869
Appendix C: Concurrent Classes from System.Collections.Concurrent 895
Appendix D: C# 2.0 Topics 899
Appendix E: C# 3.0 Topics 903
Appendix F: C# 4.0 Topics 905
Index 907