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 third edition covers C# 2-5.
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.
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 |
C# articles | |
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. |