I get a lot of e-mails asking me if I will be updating my CLR via C# book for .NET 3.5. This blog entry will asnwer this question.

Here is the short answer: NO, I am not updating the book.

Here is the long answer: My CLR via C# book was last updated for .NET 2.0 and I have no intention of updating the book for .NET 3.0 or .NET 3.5. The reason is because my book is really about the CLR and .NET 3.0 and 3.5 still run on top of CLR 2.0.

.NET 3.0 and 3.5 is really CLR 2.0 plus some new DLLs that contain new class libraries for WPF, WCF, WF, Addin support and Linq support. My book has never covered any ancillary class libraries; it has always focused on the CLR itself and the small subset of class library types that talk directly to the runtime engine. 

In addition, .NET 3.0 shipped with C# 2.0 and so no changes were made to the C# language/compiler either. Of course, .NET 3.5 does ship with C# 3.0 which does offer many new features (automatically-implemented properties, implicitly typed local variables, extension methods, lambda expressions, object initializers, anonymous types, implicitly typed arrays, partial methods, query expressions, and expression tress). However, all of these features are just compiler syntactic sugar to make syntax easier for programmers. Many of these features are very simple to understand and grasp so I feel that it is not worth updating my book just to cover the new syntax offered by C# to accomplish things you already could do.


While many of the C# 3.0 features are needed to fully leverage the various set of LINQ technologies (Linq to Object, Linq to XML, Linq to Sql, Linq to DataSet, and Linq to Entities). And, while I will address the new C# language features in some future edition of my book (to coincide with the release of a new CLR version), I will never cover LINQ itself; just the architecture that makes LINQ possible.

Also, I just recently completed updating my Windows book (Windows via C/C++, 5th Edition, Microsoft Press) for Windows Vista and Windows Server 2008. 

  • wds_admin

    Thanks very much for the full explanation instead of just saying No. Look forward to a future edition should the CLR be updated.

  • wds_admin


    I use your book *a lot* for reference, so much so that at this point pages are coming apart.

    I would like to know if is possible to get your book as an electronic book (eBook), not only because this way I won’t have to worry about the book coming apart but also because it would make searching for a particular subject *so much* easier.

    Is this available now, if not, are you planning to make something like that available?


  • Thanks for the update Jeff.

  • Good stuff. I dont think lot of people realize that .NET 3.0 and .NET 3.5 uses CLR2.0 and the only difference is the new Libraries added to the framework.
    Thanks Jeff.

  • wds_admin

    What LINQ book you can recommend as expert ?

  • Hey Jeff,

    I m reading CLR via C# book right now and i found it excellent.

    Hardik Joshi

  • wds_admin

    Hi Jeff

    There is no better book that shows the magical world of C#.NET than “CLR via C#”…. Programmers like us are very lucky enough to get mentors like you… Keep up this spirit of helping our programming folks ..


    Yours eternal fan


  • wds_admin


    Even though I have your CLR via c# in paper I would really like to have it on my Amazon Kindle it would be so much easier to read. So how about it?


  • hi jeff!

    you did a very good job writing clr via c#!

    however i asked myself the question ….

    how could it be possible that a struct e.g DateTime is derived from the class ValueType.

    if i try to derive a struct from a class the compiler tells me that the given type is not an interface
    normally it is not possible to derive a struct from anything even not a struct itself!?

  • JeffreyR

    All .NET languages and the clr itself treat ValueType very special. They are always implicitly derived from System.ValueType but langauges never let you specify this explicitly. ValueType overrides some virtual methods that Object has like Equals & GetHashCode.

  • wds_admin

    Thanx for such a nice book, and also thanx for giving complete answer instead of saying just no.

  • Thanks for this post. I’m about to buy the book, and I wondered if I should hold off in case an updated edition was coming out, or if the info had become stale, but here you’ve explained that it’s still just as relevant. Exactly what I needed to know! Off to Amazon I go…

  • Thanks for the comment, I was wondering if there would be a new edition coming out, but it makes complete sense. I’ll look into getting the 2nd edition!

  • wds_admin

    Thanks for this post. Your answer had actually made my opinion about how to keep in pace with Microsoft rapidly chanding .NET versions is by keeping your base fundamentals clear and take abstractions/additional advantageous stuff as add ons. I always believed and conveyed to my friends that please stick to CLR 2.0 until there are no major updates. But getting answer from CLR guru itself makes my point more stronger. Waiting for new updates on CLR, whenever to come.

  • Yes, CLR via C# deal with basic concept of CLR. It is true for all latest version of .net.

  • wds_admin

    Hello jeff,, thnks for the update… i just finished up reading a chapter on Delegates from CLR via C#……..there i found something which confused me… most of the books and articles i have read say that execution sequence of methods in multicast delegates is not fixed and we should not rely on that… but according to your’s explanation on Invoke method and _invocationList… i feel it will always be executed in whatever sequence you are chaining them… is this correct or Am i missing some hidden point

  • JeffreyR

    Officially, MS has never guaranteed the order in which delegates will be invoked. And so, they could change the implementation of delegates and break the existing order. However, MS owuld have to have a very good reasn for doing this because it is potentially a breaking change. So, I don’t think they’ll ever change the callback order as I can’t imagine some extremely important new scenario where breaking the order would be necessary.

  • wds_admin

    Hi Jeff,

    Great book , I spent 4 months reading it cover to cover and now frequently dive into it to help my understanding of the CLR.

    I can see why you did not update the book for .net 3.5, however what about the up coming release of .net 4.0?

    Will you be releasing a book update for this?

  • wds_admin

    Ah, I guess I should have searched your blog before asking that question. http://www.wintellect.com/CS/blogs/jeffreyr/archive/2009/11/01/what-s-new-in-clr-via-c-3rd-edition-as-compared-to-the-2nd-edition.aspx

    Only problem now is that we have to wait til next March!

  • wds_admin

    CLR via C#, it’s awesome.