
Essential C# 4.0
Mark Michaelis(Author)
Addison Wesley (Publisher)
3rd Edition
Published on 18. March 2010
Book
Paperback/Softback
984 pages
978-0-321-69469-0 (ISBN)
Article exhausted; check for reprint
Description
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, multi-threading, 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
Best practices for object-oriented programming in C#
C# primitive data types, value and reference types, implicitly typed variables, anonymous types, plus dynamic typing in C# 4.0
Methods and parameters-including extension methods, partial meth-ods, and C# 4.0's optional and named parameters
Generics, concurrent collections, and custom collections with iterators
Delegates, events, and lambda expressions
Collection interfaces and standard query operators
Query expressions and the tree expressions on which LINQ providers are based
Reflection, attributes, and dynamic programming
Parallel Query Processing with PLINQ
Multithreaded programming with the Task Parallel Library
Platform interoperability and unsafe code
The Common Language Infrastructure that underlies C#
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.
This edition contains two new chapters on parallel programming, multi-threading, 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
Best practices for object-oriented programming in C#
C# primitive data types, value and reference types, implicitly typed variables, anonymous types, plus dynamic typing in C# 4.0
Methods and parameters-including extension methods, partial meth-ods, and C# 4.0's optional and named parameters
Generics, concurrent collections, and custom collections with iterators
Delegates, events, and lambda expressions
Collection interfaces and standard query operators
Query expressions and the tree expressions on which LINQ providers are based
Reflection, attributes, and dynamic programming
Parallel Query Processing with PLINQ
Multithreaded programming with the Task Parallel Library
Platform interoperability and unsafe code
The Common Language Infrastructure that underlies C#
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.
Reviews / Votes
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#
More details
Edition
3rd edition
Language
English
Place of publication
New Jersey
United States
Publishing group
Pearson Education (US)
Target group
College/higher education
Dimensions
Height: 178 mm
Width: 230 mm
Thickness: 53 mm
Weight
1500 gr
ISBN-13
978-0-321-69469-0 (9780321694690)
Copyright in bibliographic data is held by Nielsen Book Services Limited or its licensors: all rights reserved.
Schweitzer Classification
Other editions
New editions

Mark Michaelis
Essential C# 7.0
Book
09/2018
6th Edition
Microsoft Press
€55.00
Shipment within 3-4 weeks

Mark Michaelis | Eric Lippert
Essential C# 5.0
Book
12/2012
4th Edition
Addison Wesley
€50.75
Article exhausted; check for reprint
Previous edition

Book
09/2008
2nd Edition
Addison Wesley
€39.60
Article exhausted; check for reprint
Person
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.
Content
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
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