Register your product to gain access to bonus material or receive a coupon.
Essential C# 5.0 is a well-organized, no-fluff guide to the latest versions of C# for programmers at all levels of C# experience. Fully updated to reflect new features and programming patterns introduced with C# 5.0 and .NET 4.5, this guide shows you how to write C# code that is simple, powerful, robust, secure, and maintainable. Microsoft MVP Mark Michaelis and C# principal developer Eric Lippert provide comprehensive coverage of the entire language, offering a complete foundation for effective software development.
The authors illustrate key constructs with succinct, downloadable code examples. Graphical mind maps at the beginning of each chapter outline the material that is covered and how individual topics interrelate. This edition also includes C# Coding Guidelines that call attention to today’s best practices for writing C# code. Separate indexes of C# versions 3.0, 4.0, and 5.0 make it easy to find answers specific to whatever version of C# you are using.
Throughout, topics intended for beginners and advanced readers are clearly marked. If you’re new to C#, this guide will help you start writing significant code quickly. If you’re an experienced C# developer, you’ll gain insight into today’s most complex programming challenges and techniques as you master key C# 5.0 innovations such as async/await pattern. No matter how advanced your skills become, you’ll come to rely on this indispensable reference.
Coverage includes
Working with Operators and Control Flow in C#
Download the sample pages (includes Chapter 3 and Index)
Figures xv
Tables xvii
Foreword xix
Preface xxiii
Acknowledgments xxxv
About the Authors xxxvii
Chapter 1: Introducing C# 1
Hello, World 2
C# Syntax Fundamentals 4
Console Input and Output 17
Chapter 2: Data Types 33
Fundamental Numeric Types 34
More Fundamental Types 43
null and void 53
Categories of Types 57
Nullable Modifier 60
Conversions between Data Types 60
Arrays 67
Chapter 3: Operators and Control Flow 85
Operators 86
Introducing Flow Control 103
Code Blocks ({}) 110
Code Blocks, Scopes, and Declaration Spaces 112
Boolean Expressions 114
Bitwise Operators (<<, >>, |, &, ^, ~) 121
Control Flow Statements, Continued 127
Jump Statements 139
C# Preprocessor Directives 145
Chapter 4: Methods and Parameters 155
Calling a Method 156
Declaring a Method 163
The using Directive 168
Returns and Parameters on Main() 172
Advanced Method Parameters 175
Recursion 184
Method Overloading 186
Optional Parameters 189
Basic Error Handling with Exceptions 194
Chapter 5: Classes 209
Declaring and Instantiating a Class 213
Instance Fields 217
Instance Methods 219
Using the this Keyword 220
Access Modifiers 227
Properties 229
Constructors 244
Static Members 255
Extension Methods 265
Encapsulating the Data 267
Nested Classes 269
Partial Classes 272
Chapter 6: Inheritance 277
Derivation 278
Overriding the Base Class 290
Abstract Classes 302
All Classes Derive from System.Object 308
Verifying the Underlying Type with the is Operator 309
Conversion Using the as Operator 310
Chapter 7: Interfaces 313
Introducing Interfaces 314
Polymorphism through Interfaces 315
Interface Implementation 320
Converting between the Implementing Class and Its Interfaces 326
Interface Inheritance 326
Multiple Interface Inheritance 329
Extension Methods on Interfaces 330
Implementing Multiple Inheritance via Interfaces 331
Versioning 334
Interfaces Compared with Classes 336
Interfaces Compared with Attributes 337
Chapter 8: Value Types 339
Structs 340
Boxing 349
Enums 358
Chapter 9: Well-Formed Types 371
Overriding object Members 371
Operator Overloading 385
Referencing Other Assemblies 393
Defining Namespaces 398
XML Comments 402
Garbage Collection 407
Resource Cleanup 410
Lazy Initialization 419
Chapter 10: Exception Handling 423
Multiple Exception Types 424
Catching Exceptions 426
General Catch Block 430
Guidelines for Exception Handling 432
Defining Custom Exceptions 435
Wrapping an Exception and Rethrowing 438
Chapter 11: Generics 443
C# without Generics 444
Introducing Generic Types 449
Constraints 462
Generic Methods 476
Covariance and Contravariance 481
Generic Internals 489
Chapter 12: Delegates and Lambda Expressions 495
Introducing Delegates 496
Lambda Expressions 506
Anonymous Methods 512
General-Purpose Delegates: System.Func and System.Action 514
Chapter 13: Events 533
Coding the Observer Pattern with Multicast Delegates 534
Events 548
Chapter 14: Collection Interfaces with Standard Query Operators 561
Anonymous Types and Implicitly Typed Local Variables 562
Collection Initializers 568
What Makes a Class a Collection: IEnumerable
Standard Query Operators 577
Chapter 15: LINQ with Query Expressions 613
Introducing Query Expressions 614
Query Expressions Are Just Method Invocations 632
Chapter 16: Building Custom Collections 635
More Collection Interfaces 636
Primary Collection Classes 638
Providing an Indexer 655
Returning Null or an Empty Collection 659
Iterators 660
Chapter 17: Reflection, Attributes, and Dynamic Programming 677
Reflection 678
Attributes 688
Programming with Dynamic Objects 714
Chapter 18: Multithreading 727
Multithreading Basics 730
Working with System.Threading 737
Asynchronous Tasks 745
Canceling a Task 764
The Task-Based Asynchronous Pattern in C# 5.0 770
Executing Loop Iterations in Parallel 794
Running LINQ Queries in Parallel 804
Chapter 19: Thread Synchronization 811
Why Synchronization? 813
Timers 841
Chapter 20: Platform Interoperability and Unsafe Code 845
Using the Windows Runtime Libraries from C# 846
Platform Invoke 849
Pointers and Addresses 862
Executing Unsafe Code via a Delegate 872
Chapter 21: The Common Language Infrastructure 875
Defining the Common Language Infrastructure (CLI) 876
CLI Implementations 877
C# Compilation to Machine Code 879
Runtime 881
Application Domains 887
Assemblies, Manifests, and Modules 887
Common Intermediate Language (CIL) 890
Common Type System (CTS) 891
Common Language Specification (CLS) 891
Base Class Library (BCL) 892
Metadata 892
Appendix A: Downloading and Installing the C# Compiler and CLI Platform 897
Microsoft’s .NET 897
Appendix B: Tic-Tac-Toe Source Code Listing 901
Appendix C: Interfacing with Mutithreading Patterns Prior to the TPL and C# 5.0 907
Asynchronous Programming Model 908
Asynchronous Delegate Invocation 921
The Event-Based Asynchronous Pattern (EAP) 924
Background Worker Pattern 928
Dispatching to the Windows UI 932
Appendix D: Timers Prior to the Async/Await Pattern of C# 5.0 937
Index 943
Index of C# 5.0 Topics 974
Index of C# 4.0 Topics 975
Index of C# 3.0 Topics 984