using words such as assembly, link, chain, thread, and fusion, as though the topic was more appropriate
for blacksmiths than for programmers. This book’s primary audience is experienced developers looking
to add another language to their quiver. However, I have carefully assembled this book to provide
significant value to developers at all levels.
• Beginners: If you are new to programming, this book serves as a resource to help transition
you from an entry-level programmer to a C# developer, comfortable with any C# programming
task that’s thrown your way. This book not only teaches you syntax, but also trains you in good
programming practices that will serve you throughout your programming career.
• Structured programmers: Just as it’s best to learn a foreign language through immersion,
learning a computer language is most effective when you begin using it before you know all the
intricacies. In this vein, this book begins with a tutorial that will be comfortable for those
familiar with structured programming, and by the end of Chapter 4, developers in this category
should feel at home writing basic control flow programs. However, the key to excellence for
C# developers is not memorizing syntax. To transition from simple programs to enterprise
development, the C# developer must think natively in terms of objects and their relationships.
To this end, Chapter 5’s Beginner Topics introduce classes and object-oriented development.
The role of historically structured programming languages such as C, COBOL, and FORTRAN
is still significant but shrinking, so it behooves software engineers to become familiar with
object-oriented development. C# is an ideal language for making this transition because it was
designed with object-oriented development as one of its core tenets.
• Object-based and object-oriented developers: C++ and Java programmers, and many
experienced Visual Basic programmers, fall into this category. Many of you are already
completely comfortable with semicolons and curly braces. A brief glance at the code in
Chapter 1 reveals that, at its core, C# is similar to the C and C++ style languages that you
• C# professionals: For those already versed in C#, this book provides a convenient reference
for less frequently encountered syntax. Furthermore, it provides answers to language details
and subtleties that are seldom addressed. Most importantly, it presents the guidelines and
patterns for programming robust and maintainable code. This book also aids in the task of
teaching C# to others. With the emergence of C# 3.0, 4.0, and 5.0, some of the most prominent
– Implicitly typed variables (see Chapter 2)
– Extension methods (see Chapter 5)
– Partial methods (see Chapter 5)
– Anonymous types (see Chapter 11)
– Generics (see Chapter 11)
– Lambda statements and expressions (see Chapter 12)
– Expression trees (see Chapter 12)
– Standard query operators (see Chapter 14)
– Query expressions (see Chapter 15)
– Dynamic programming (Chapter 17)
– Multithreaded programming with the Task Programming Library and async (Chapter 18)
– Parallel query processing with PLINQ (Chapter 18)
– Concurrent collections (Chapter 19)
These topics are covered in detail for those not already familiar with them. Also pertinent to
advanced C# development is the subject of pointers, in Chapter 21. Even experienced C#
developers often do not understand this topic well.