Recommended only as a broad reference.
This book attempts to explain the C# language as well as the complete .Net Framework using the C# language. The book initially implies that it is not an introduction to programming but later at a number of locations attempts to explain fundamental programming concepts. For example, chapter 1 explains the concept of a variable from a very basic level. The book then proceeds while assuming previous experience or knowledge of Visual Studio and a rather hasty initial introduction to the language.
A number of key terms are used without explaining what they mean. For example, the keyword base is used in chapter 5 without any previous reference. Examples are inadequately explained and so are some key concepts, which require the reader to refer to other text on the subject. The organization of the book could also have been better. The chapter on collections might have followed the chapter on generics to avoid duplication of explanation of a number of related concepts.
A number of other concepts are either vaguely or at times inaccurately explained. A striking example is the explanation of string immutability in chapter 3. It suggests that string immutability refers to storage of each string in a fixed space to optimize CLR runtime requiring operations on strings to return modified copies of the original string. Thus, in a round about manner it is suggested that strings are read-only, as precisely suggested by the MSDN topic on strings.
However, there is some interesting explanation of various aspects of the language and the framework. For example, the chapter on optimization of .Net code explains the performance impacts of autoboxing and auto-unboxing in method calls. This chapter also gives an interesting introduction to the Performance Wizard and FxCop (.Net static code analysis utility).
I would recommend this book with a caution. It is a reasonable broad overview of the .Net framework using the C# language. However, any detail, even at an intermediate level requires referring to some other text on the subject (e.g., Programming C# by Jesse Liberty) as well as the MSDN. The book is not adequately indexed making it difficult to refer to topics using keywords, a common practice used by most developers.