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 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
Mark Michaelis is founder and president of IntelliTechture and a trainer with IDesign. His expertise encompasses software architecture, VSTS/TFS, BizTalk, SharePoint, and .NET. He has been honored as a Microsoft MVP for C#, Visual Studio Team System, and the Windows SDK, and is a Microsoft Regional Director. He serves on Microsoft’s C# software design review team and often speaks at developer conferences.
Praise for Essential C# 4.0 “If you want to be a C# developer, or if you want to enhance your C# programming skills, there is no more useful tool than a well-crafted book on the subject. You are holding such a book in your hands.” —From the Foreword by Charlie Calvert, Community Program Manager, Visual C#, Microsoft “It’s essential!”—Eric Lippert, Senior Engineer, Microsoft; coauthor, Visual Studio Tools for Office 2007 “Essential C# 4.0 continues the tradition of prior editions—the definitive work on C# the language and how to effectively code using it. This book covers all aspects of the language, from the basics to highly advanced topics; the reader doesn’t just emerge understanding the language of C#, but emerges as a better developer.—Troy Magennis, C# MVP and creator of HookedOnLINQ.com “I’ve been involved with C# since its earliest days and remember vividly a conversation with Anders Hejlsberg in which we discussed what C# didn’t have when compared to C++ at the time. He spoke of simplicity and compact design but it was plain that C# didn’t have the muscle to compete with C++ in those early days. Here we are, almost a decade later, with the latest incarnation of C# ready to go and the difference is huge. The elegance of C# is still there but the power of the language has advanced by leaps and bounds. Now, C# is second to none and may be first among equals. An important aspect to remember is that C# is the language but it is the .NET framework that empowers our expression as developers. Essential C# 4.0 presents both the language and the important aspects of that framework in a clear and concise manner that makes this book a great tool for learning the language and also covers aspects of general programming that are, well, essential.”—Bob Powell, C# MVP, www.bobpowell.net “Essential C# 4.0 is a book that anyone who wants to be an expert C# programmer should own. It’s a rare book that is on both my short list of books that I recommend for experts and my short list of books that I recommend for programmers new to C#.”—Peter Ritchie, President, Peter Ritchie Inc. Software Consulting; Microsoft C# MVP “Let Mark Michaelis serve as your guide from novice to expert C# developer. If you’ve never used C#, read this book carefully for a complete guided tour of the language. If you’re already familiar with C#, you’ll still find plenty to learn. Mark’s coverage of the language is very complete, including the latest techniques in the C# 4.0 additions. This book is and will remain within easy reach. It’s a ready reference that every C# developer should have handy.”—Bill Wagner, Founder, SRT Solutions; Microsoft Regional Director; author of Effective C# and More Effective C#
![]() |
Ask a Question About this Product More... |
![]() |