Books & ebooks about Microsoft tools, technologies, & research. Plus programming best practices. We hope you enjoy this post.
Jeffrey Richter has completed CLR via C#, Third Edition and the book is at the printer!
We’ll post chapter excerpts when the book is available in a couple of weeks. Here is Jeffrey describing the book in his Introduction:
IntroductionIt was October 1999 when some people at Microsoft first demonstrated the Microsoft .NETFramework, the common language runtime (CLR), and the C# programming language to me.The moment I saw all of this, I was impressed and I knew that it was going to change the wayI wrote software in a very significant way. I was asked to do some consulting for the team andimmediately agreed. At first, I thought that the .NET Framework was an abstraction layer overthe Win32 API and COM. As I invested more and more of my time into it, however, I realizedthat it was much bigger. In a way, it is its own operating system. It has its own memory manager,its own security system, its own file loader, its own error handling mechanism, its ownapplication isolation boundaries (AppDomains), its own threading models, and more. Thisbook explains all these topics so that you can effectively design and implement softwareapplications and components for this platform.
I have spent a good part of my life focusing on threading, concurrent execution, parallelism,synchronization, and so on. Today, with multicore computers becoming so prevalent, thesesubjects are becoming increasingly important. A few years ago, I decided to create a bookdedicated to threading topics. However, one thing led to another and I never produced thebook. When it came time to revise this book, I decided to incorporate all the threadinginformation in here. So this book covers the .NET Framework’s CLR and the C# programminglanguage, and it also has my threading book embedded inside it (see Part V, “Threading”).
It is October 2009 as I write this text, making it 10 years now that I’ve worked with the .NETFramework and C#. Over the 10 years, I have built all kinds of applications and, as a consultantto Microsoft, have contributed quite a bit to the .NET Framework itself. As a partner inmy own company, Wintellect (http://Wintellect.com), I have worked with numerous customersto help them design software, debug software, performance-tune software, and solve issuesthey have with the .NET Framework. All these experiences have really helped me learn thespots that people have trouble with when trying to be productive with the .NET Framework.I have tried to sprinkle knowledge from these experiences through all the topics presented inthis book.
Who This Book Is For
The purpose of this book is to explain how to develop applications and reusable classes forthe .NET Framework. Specifically, this means that I intend to explain how the CLR works andthe facilities that it offers. I’ll also discuss various parts of the Framework Class Library (FCL).No book could fully explain the FCL—it contains literally thousands of types now, and thisnumber continues to grow at an alarming rate. Therefore, here I’m concentrating on the coretypes that every developer needs to be aware of. And while this book isn’t specifically aboutWindows Forms, Windows Presentation Foundation (WPF), Silverlight, XML Web services, WebForms, and so on, the technologies presented in the book are applicable to all theseapplication types.
The book addresses Microsoft Visual Studio 2010, .NET Framework version 4.0, and version 4.0of the C# programming language. Since Microsoft tries to maintain a large degree of backwardcompatibility when releasing a new version of these technologies, many of the thingsI discuss in this book apply to earlier versions as well. All the code samples use the C#programming language as a way to demonstrate the behavior of the various facilities. But,since the CLR is usable by many programming languages, the book’s content is still quiteapplicable for the non-C# programmer.
Note You can download the code shown in the book from Wintellect’s Web site(http://Wintellect.com). In some parts of the book, I describe classes in my own PowerThreading Library. This library is available free of charge and can also be downloaded fromWintellect’s Web site.
Today, Microsoft offers several versions of the CLR. There is the desktop/server version, whichruns on 32-bit x86 versions of Microsoft Windows as well as 64-bit x64 and IA64 versionsof Windows. There is the Silverlight version, which is produced from the same source codebase as the desktop/server version of the .NET Framework’s CLR. Therefore, everything in thisbook applies to building Silverlight applications, with the exception of some differences inhow Silverlight loads assemblies. There is also a “lite” version of the .NET Framework calledthe .NET Compact Framework, which is available for Windows Mobile phones and otherdevices running the Windows CE operating system. Much of the information presented inthis book is applicable to developing applications for the .NET Compact Framework, but thisplatform is not the primary focus of this book.
On December 13, 2001, ECMA International (http://www.ecma-international.org/) acceptedthe C# programming language, portions of the CLR, and portions of the FCL as standards.The standards documents that resulted from this have allowed other organizations to buildECMA-compliant versions of these technologies for other CPU architectures, as well as otheroperating systems. In fact, Novell produces Moonlight (http://www.mono-project.com/Moonlight), an open-source implementation of Silverlight (http://Silverlight.net) that isprimarily for Linux and other UNIX/X11-based operating systems. Moonlight is based on theECMA specifications. Much of the content in this book is about these standards; therefore,many will find this book useful for working with any runtime/library implementation that adheresto the ECMA standard.
Note My editors and I have worked hard to bring you the most accurate, up-to-date, in-depth,easy-to-read, painless-to-understand, bug-free information. Even with this fantastic teamassembled, however, things inevitably slip through the cracks. If you find any mistakes in thisbook (especially bugs) or have some constructive feedback, I would greatly appreciate it if youwould contact me at JeffreyR@Wintellect.com.
Nice book, will read. Please correct links in the article.
Sorry about that; I have fixed the links.
This book helped me a lot. Preorderd the 3rd edition. Buying a physical book after a long time. My Kindle DX is really good for technical books. Any plans on releasing it on Kindle.
Hello Jeff,
Related to Chapter 20, "Exceptions and State Management", here is what I do in order to not lose the line number where the original exception was thrown.
private void SomeMethod()
{
try
//I don't want to lose the line number of the statement below
throw new ArgumentException("--- incorrect argument exception raised---");
}
catch (Exception e)
//if we must re-throw, don't do this
//throw;
//do this instead
throw (Exception)Activator.CreateInstance(e.GetType(), e.Message + e.StackTrace);