Six Questions for Jon Skeet, author of C# In Depth, 4th Edition

By Frances Lefkowitz

Jon Skeet (@jonskeet) is a senior software engineer at Google, London and a recognized authority on Java and C#. He is the top contributor to Stack Overflow.


Jump into any page of the book from the table of contents on liveBook!

Take 39% off C# In Depth, 4th Edition. Just enter intskeet into the discount code box at checkout at manning.com.


Wow, this is the fourth edition of C# In Depth. Do you write a new one every time there’s a new version release for the language?
Yes, that’s definitely the driver. Arguably I’m a little late; the fourth edition adds coverage of both C# 6 and C# 7. But just C# 6 would have been a pretty slim addition. Of course, the language doesn’t stand still; C# 8 is now available in preview. But don’t expect a fifth edition for a little while!
How has C# evolved over the years? 
Gosh, I could write a whole book about that. Wait a minute, I have 🙂

C# has evolved in lots of different ways. C# 2 added a lot that we now consider fundamental to C#, like generics, nullable value types, closures in the form of anonymous methods, and iterator blocks. C# 3 then added LINQ and all the language features required for that, such as lambda expressions, extension methods, anonymous types, and expression trees. C# 4 was mostly about dynamic typing, although there were other important features such as generic variance, and optional parameters / named arguments. C# 5 was almost entirely about async/await, which is a huge feature–and a very complex one to get your head around.

What are some of the significant changes in the language since the last edition of your book?
C# 6 and C# 7 are the changes I cover in the new edition. C# 6 was a relatively small release, with a bunch of welcome changes that all make code cleaner–interpolated string literals, the nameof operator, the null conditional operator and a few other bits and pieces. Nothing earth-shattering, but very pleasant to use. C# 7 was the first release since 1.2 to have minor versions–7.0, 7.1, 7.2, and 7.3. It included another set of small changes for concise code, but also bigger changes in terms of language support for tuples, and a lot more pass by reference being available, primarily for performance reasons.
Do you use C# in your daily work life at Google? 
My main role at Google is to write and maintain .NET client libraries for Google APIs. That helps me keep up to date on language and platform features, as well as giving me a huge interest in versioning…
You’re quite the celebrity on Stack OverFlow; Where did you come up with the time to answer more than 34,000 questions?
Oh, lots of time here and there, on journeys, at home, waiting for tests to run. These days, I spend more of my time adding comments and editing posts to help create better questions than actually answering… but it’s still a lovely feeling when there’s a good C# question to answer.
In case you’re slowing down a bit, the devs at Stack OverFlow have created a Jon Skeet bot to answer questions in your stead. Have you tried it?
I did have a look, yes, and fortunately it’s not very good–and I believe it’s not really intended to be very good. It’s intended to highlight the personal, human qualities that all Stack Overflow users bring to the platform, which can’t be machine generated. I’m not worried about being bested by a bot any time soon!

Phew!