Synopses & Reviews
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#
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
- 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 methods, 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.
Review
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#
Review
Praise for Essential C# 3.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
“In a time when you can search online for any reference material, Essential C# 3.0 is the one book I still bother to carry in my bag. Any developer can hit F1 for help with the language syntax; this book, however, arms me with the knowledge to make better design and coding decisions (and the confidence to say so). You know when a book has more than twenty pages of index that it’s got depth covered, and although Essential C# 3.0 has introductory chapters, it progresses effortlessly into the lesser known corners of the language, which makes this book indispensible to any level of C# developer.”
—Troy Magennis, C# MVP and creator of HookedOnLINQ.com
“If you are new to C#, as I was, Mark’s book is an excellent way to start. His approach takes you step by step through the structure and syntax of the language, making it easy to understand how things work. I found the code samples extremely helpful and supportive of the concepts being discussed.”
—Robert Stokesbary, senior consultant, Option Explicit
“This book expands on the concepts introduced in Essential C# 2.0 to include C# 3.0 enhancements. One great aspect of this book is that it not only covers the new 3.0 enhancements in great detail, but it also shows where it makes sense to utilize these new features over the existing 2.0 features. While I have been programming C# for many years, I find myself referring to this book often and always seem to find something new buried in the pages. This is a must-read for both the C# newbie as well as the C# seasoned veteran.”
—Michael Stokesbary, senior software engineer, Itron Inc.
Praise for the First Edition
“Essential C# 2.0 pulls off a very difficult task. The early chapters are comprehensible by beginning developers, while the later chapters pull no punches and provide the experienced developer with the detailed information they need to make the most of C# 2.0. Starting with the first chapter, Mark has successfully interwoven tidbits of information useful to even the most advanced developer while keeping the book approachable.”
—Chris Kinsman, chief architect, Vertafore, Microsoft Regional Director
“How refreshing! This book deals with C# thoroughly, rather than skimming over the whole .NET framework. It is valuable to newcomers and professionals alike.”
—Jon Skeet, C# MVP
“Essential C# 2.0 is a one-stop shop for an experienced programmer looking to ramp up on one of the hottest languages around today. Mark delivers an intelligent and detailed tour of C#, providing newcomers to the language with a solid foundation of skill on which to build their next generation of applications.”
—Stephen Toub, technical editor, MSDN Magazine
“This book provides complete, up-to-date coverage of all the programming constructs in C#. Masterfully organized, it allows beginning programmers to get on board and leads more experienced programmers into the world of structured programming. Because of its unwavering focus on the essential programming constructs of C#—such as generics, delegates, and much more—this book is indispensable. For programmers who want to solve their day-to-day programming issues using the latest features this modern programming language has to offer, this book is indispensable.”
—Narendra Poflee, IT integration specialist, Itron Inc.
“Essential C# 2.0 is an ideal book for all programmers interested in C#. If you are a beginner, you will quickly learn the basics of C# programming and become familiar with the concepts. The flow of the text is easy to follow and does a great job of not repeating concepts that have already been covered. For the experienced programmer, this book has priceless nuggets embedded within its pages, making it a great read for programmers who are already familiar with C#. This will be a book that I will keep next to my computer for years to come.”
—Michael Stokesbary, software engineer, Itron Inc.
Synopsis
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
- C# primitive data types, value types, reference types, type conversions, and arrays
- Operators and control flow, loops, conditional logic, and sequential programming
- Methods, parameters, exception handling, and structured programming
- Classes, inheritance, structures, interfaces, and object-oriented programming
- Well-formed types, operator overloading, namespaces, and garbage collection
- Generics, collections, custom collections, and iterators
- Delegates and lambda expressions
- Standard query operators and query expressions
- LINQ: language integrated query
- Reflection, attributes, and declarative programming
- Threading, synchronization, and multithreaded patterns
- Interoperability and unsafe code
- The Common Language Infrastructure that underlies C#
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.
Synopsis
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
- 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 methods, 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.
Synopsis
Diving into new features that are revolutionizing programming, this updated edition contains chapters covering query expressions, extension methods, and LINQ as a whole. The author covers the C# language in depth, and each important construct is illustrated with succinct, relevant code examples.
About the Author
Mark Michaelis is an enterprise software architect at Itron Inc. In addition, Mark recently started intelliTechture, a software engineering and consulting company offering high-end consulting in Microsoft VSTS/TFS, BizTalk, SharePoint, and .NET 3.0. Mark also serves as a chief software architect and trainer for IDesign Inc.
Mark holds a B.A. in philosophy from the University of Illinois and an M.S. in computer science from the Illinois Institute of Technology. Mark was recently recognized as a Microsoft Regional Director. Starting in 1996, he has been a Microsoft MVP for C#, Visual Studio Team System, and the Windows SDK. He serves on several Microsoft software design review teams, including C#, the Connected Systems Division, and VSTS. Mark speaks at many developer conferences and has written numerous articles and books.
When not bonding with his computer, Mark is busy with his family or training for the Ironman. Mark lives in Spokane, Washington, with his wife Elisabeth, and three children, Benjamin, Hanna, and Abigail.
Table of Contents
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 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