| Articles on the C# in Depth web site |
| 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 |
An explanation of delegates and events, the difference between them, and the support C# gives for them. |
| Implementing the singleton pattern |
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 |
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 |
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 |
An introduction to the murky world of Unicode and character encodings. |
| Debugging Unicode Problems |
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. |