I'm the publisher of "C# in a Nutshell" and given my admitted interest in the success of this book I would not ordinarily post a comment in this space. However, a previous reviewer suggests that we should have stated more explicitly which .NET namespaces and types the book covers and explained
the rationale behind our decisions. He also faults us for omitting a number of important namespaces, including System.Web and System.Remoting.
If this view is widely shared, then clearly we need to add such information to the next edition. But since a revision lies somewhere in the future, for those of you considering purchase of "C# in a Nutshell" today, here are some answers.
First, the complete list of the 22 .NET Framework namespaces documented in the 450-page "C# in a Nutshell" API Quick Reference is a follows:
Microsoft.Win32
System
System.Collections
System.Collections.Specialized
System.Diagnostics
System.Globalization
System.IO
System.IO.Isolated
System.NET
System.NET.Sockets
System.Reflection
System.Reflection.Emit
System.Runtime.InteropServices
System.Runtime.Serialization
System.Runtime.Serialization.Formatters
System.Text
System.Text.RegularExpressions
System.Threading
System.Timers
System.Xml
System.Xml.XPath
System.Xml.XSL
These namespaces comprise more than 700 types, and thousands of members, which are listed in a quick-lookup format that complements, we believe, the syntax used by the official Microsoft documentation.
O'Reilly customers who have purchased "Java in a Nutshell" or other Nutshell titles already know that the series aims to provide experienced professionals with usable quick references that are reasonably complete, but not exhaustive. In the case of C# (and Visual Basic .NET), our idea was to first match the coverage of the Java Standard Edition core classes found in our best-selling "Java in a Nutshell," and to then add additional namespaces that were core to programming the .NET platform itself.
The first criterion clearly required us to document the System namespace, as well as more specialized namespaces for threading, collections, reflection, diagnostics, and so on. The second led us to include serialization, COM interop, and the Microsoft.Win32 types needed to interact with the Windows
platform. In addition, because XML is so core to .NET, we included the most important XML namespaces as well.
We decided early to exclude the specialized .NET libraries for building Windows and web applications, web services, and data-access applications. We felt these libraries deserved volumes of their own: "Windows Forms in a Nutshell," "ASP.NET in a Nutshell," and "ADO.NET in a Nutshell."
We had a hard time deciding what to do about remoting, enterprise services, security and a number of other important .NET libraries. In the end, we decided these would be of interest mostly to enterprise application builders and should also be presented in a Nutshell of their own, much like "Java Enterprise in a Nutshell."
In the end, we hope our readers will appreciate "C# in a Nutshell" as a reference for C# programmers that also documents the core runtime .NET libraries most programers need to complete their basic tasks: manipulating strings,
performing mathematical operations, doing I/O, and so on. In this respect, the book resembles existing core volumes on C, C++, and Java, where one would expect coverage of the C standard library, STL or the Java 2 SDK, Standard Edition.
Thanks for the feedback -- we rely on our customers to tell us when we've missed the mark. We'd welcome additional feedback from Amazon.com readers about "C# in a Nutshell." And as the previous reviewer has suggested, we'll try to be clearer about our choices in the next edition.
(I'm giving the book 3 stars in an attempt to avoid unfairly influencing its rating.)