Jon Skeet's C# and .NET articles and links

The code in all articles is C#-based, as that's the background I come from. Many of the concepts in the C# articles will be applicable to other .NET languages, but there may be some wrinkles which are C#-specific. The framework articles should be more language-agnostic, even though they are couched in C# terms.

I have a book called C# in Depth, published by Manning. Hopefully if you find these articles useful, you'll find the book handy too. The first edition covers C# 2 and 3; the second edition (out now) covers C# 4 as well.

I have a blog about C#, Java and other technologies. Many posts in the blog may well end up as full-blown articles. Think of it as a sort of incubator - somewhere to jot down interesting ideas and questions which should really have a thorough explanation some time.

This page itself now has its own RSS feed. This is maintained by hand, so I may occasionally forget to do it or muck things up - please mail me if you notice a problem.

Articles on the C# in Depth web site
Iterator block implementation Details about what the C# compiler does on your behalf to build state machines from iterator blocks
Iterators, iterator blocks and data pipelines A close look at why iterators are at the heart of LINQ to Objects, and how iterator blocks make them easy to implement
The Beauty of Closures A brief explanation of why closures are neat, and what they look like in C# and Java
Why Properties Matter Reasons for making every field private, and exposing state via properties
Bluffer's Guide to C# 2 Quick rundown of the major new features in C# 2
Bluffer's Guide to C# 3 Quick rundown of the major new features in C# 3
C# articles
Newsgroup FAQ A FAQ for the microsoft.public.dotnet.languages.csharp newsgroup
C# 2.0 A guide to the features introduced in C# 2.0
Parameter passing A detailed explanation of the difference between default/ref/out parameters.
Delegates and events
(Now on csharpindepth.com)
An explanation of delegates and events, the difference between them, and the support C# gives for them.
Implementing the singleton pattern
(Now on csharpindepth.com)
A comparison of different singleton pattern implentations.
Constructors An detailed explanation of constructors, with reference to the language specification.
C# Brainteasers A collection of brainteasers in C#.
C# and beforefieldinit
(Now on csharpindepth.com)
Discussion of some surprising behaviour with respect to static constructors.
Framework/library articles
Generic operators How to perform mathematical operations (addition, subtraction etc) in a generic way, using .NET 3.5 expression trees.
Concatenating Strings Efficiently When to use StringBuilder, and when not to.
Exceptions and Performance Redux
(original version)
Just how expensive are exceptions anyway?
Strings in .NET
(Now on csharpindepth.com)
Some explanations about the behaviour System.String type.
Multi-threading in .NET A fairly long article giving most of the information I know about multi-threading in the .NET environment.
Reading binary data Some "do"s and "don't"s regarding reading binary data from a stream.
Unicode
(Now on csharpindepth.com)
An introduction to the murky world of Unicode and character encodings.
Debugging Unicode Problems
(Now on csharpindepth.com)
What to do when things go wrong with character data.
Memory in .NET - what goes where A brief explanation of where data ends up in .NET.
Binary floating point basics An introduction to the perils of floating point arithmetic, and some details of the .NET binary floating point types.
Decimal floating point basics Following on from the previous article, this talks about the .NET System.Decimal type.
Plug-ins and cast exceptions A guide to avoiding casting exceptions when writing plug-in frameworks.
Miscellaneous articles
Debugging tips Hints and tips about the process of finding and fixing bugs
Short but complete programs A description of what I'm after when I ask newsgroup posters for short but complete programs demonstrating their problems.
Obfuscation and Decompilation An article about my view on how serious (or not) the problem of decompilation is.
Job postings on newsgroups Why recruiters should stay out of technical newsgroups.
Code and Libraries
Miscellaneous Utilities A library of little bits and bobs to make life easier.
EBCDIC encoding A discussion of IBM's EBCDIC character encoding, and a library to help developers to use it in .NET.
Simple micro-benchmarking in C# A simple way to benchmark small portions of C# code.
Important links
The C# 1.0 Language Specification Jon Jagger's hyperlinked version of the ECMA specification. Essential reading for details of C# semantics.
The C# 3.0 Language Specification The current version of the C# language specification, in Word format
Microsoft's naming conventions Even if you don't follow them, it's worth knowing about them.

Back to my homepage.