Rating: - Suggestion to Author for next book
Overall, book is pretty darn good.
The problem I have with the book is the author's choice of example code. At times, instead of selecting "objects", he chooses abstract concepts such as "Compressible". For instance, in chapter 8, which covers interfaces, why not choose the traditional automobile interface. Something surely all of us can quickly grasp, so that we can focus on the C# concepts, rather than what a "compressible" is? Object "A" is a "Compressible", what???, what the heck is a Compressible..... This made it a bit difficult to follow many of the code examples, and subsequently I found myself glossing over the examples, moving on to the next pages in hopes of something more interesting.
As a side note: My favorite computer book of all time is "Win32 System Services" by Marshall Brain. The examples in the book get right to the point, making it very easy to read. This is my benchmark I gauge all other books by.
Other than that minor complaint, the book is a valuable resource that I intend to keep, and add to my repertoire of books.
Rating: - Really a great book for learning the language.
When I started learning C# (and I'm still learning), I purchased a number of books. Though each book contributes a little something extra, this book is my primary reference. The first half of the book covers the fundamentals of the language. If you have absolutely no prior programming experience, I'd recommend the other book from this series "Learning C#". Still, this book is thorough in its explanations. The second half of the book covers the use of C# for Windows and Web applications (and more). I yet haven't devoted much time to this section, but I expect more of the same great instruction. I HIGHLY recommend this book.
Rating: - This 4th edition is much worse
If you are going to buy this book, stick with earlier editions. Earlier editions of the book included interesting in-depth discussions of Reflection. In fact, many links on the web discussing reflection or dynamic invokation reference this book's earlier edition. The new edition of the book, however, skips any in-depth discussion of .NET's underlying technology. If you are already programming in C#, you will get very little from this book. It may cover newer material, yet the newer material isn't difficult to master in the first place, so it provides little value.
Rating: - Detailed C# book
The book is divided into three parts - introduction and presentation of C#, C# programming techniques, and description of .NET framework and runtime environment.
First part starts with the history and motivation behind .NET and in particular C# programming language particular. And, as in most programming books the author presents a typical C# "Hello World" application, followed by discussion about such concepts as classes, methods, attributes, namespaces, that helps the reader to learn or refresh object oriented programming and language syntax. The details are provided about compilation and running "Hello World" application, instructions are sufficient enough for the beginner to launch the app and even debug through it.
Fundamentals of the C# language are presented in the next chapter, this includes types, statements, enumerations, operators, processor directives. After that the author gives a detailed description of C# classes - their declaration, initialization, constructors and destructors, overloading, encapsulation, and accessors - essentially the basic object oriented concepts, followed by inheritance and polymorphism - the section that also includes abstract and sealed classes, boxing and unboxing. Next paragraphs are about overloading, structs and interfaces. I think it would be logical to have the Interfaces mentioned earlier in a special chapter focused on general object oriented C#, instead of dedicating a separate chapter to it. Next is Arrays, Indexers and Collection - a long and very detailed chapter that explains the usage and handling of these structures. Strings, Exceptions, Delegates and Events are each very important and used by every C# programmer, and author dedicated each of them a separate chapter, thus closing the first part of the book.
Part 2 actually helps to apply the knowledge of the language to build applications, using Visual Studio as a development tool. We learn about Forms - basic user interface components, creating and coding controls. ADO.NET and data access are also described based on SQL databases. ASP.NET and web services are described in the next chapter, here we learn how to use visual and data access controls to create a web application. Steps to create an web services application are presented in good details.
The last part of the book is about .NET framework and runtime environment. It starts with a chapter about marshalling and remoting, that focuses on application contexts and boundaries, marshalling (transporting) objects across application domain boundaries, marshalling with proxies. An example to build a server and a client. Next chapter is threads and synchronization. The author assumes that the reader is already familiar with multithreading and focuses on how threads work in C#, we particularly learn about creating, running, killing threads and applying locks and monitors to synchronize them. Race conditions and deadlocks are mentioned at the end of the chapter.
The streams chapter is essentially about input output and is dedicated to reading and writing data from/to files and sockets. The last chapter is about integrating .NET with COM and ActiveX. Although the subject deserves a separate book, the author provides a detailed example how an ActiveX control can be imported into Visual Studio .NET project.
Overall the book gives a good detailed introduction to C# as a language and teaches how to use it in practice to build either desktop or web based application accessing database. Author illustrates material by screenshots and code examples, that helps the reader to easily create his or her own program. I think, given compact size of the book, author managed to put together all necessary details about C# as a programming language, .NET framework and their essential programming techniques. The book is a good reference material for someone already familiar with basics object oriented programming, multithreading, input output and looking to learn C# basics or make transition from Java to C#. As a developer who programmed with different languages I found the book to be a useful C# syntax reference source.
Rating: - A great beginners book for the experienced
Although I am mildy disgusted by the language itself, I must admit the book is quite well written. It is not a detailed language reference book, but a tutorial, hence, it lacks depth. But as a tutorial, it couldn't have been better. Examples clearly illustrate concepts and yet simple.
As far as C# goes, it's not very sharp. My definition of C# would be a bunch of script languages put together. It brings in flexibility, but truly lacks characteristic as a language.
Bah!
|