Ever wanted to add your own methods to Object...or any other type for that matter?
I've recently started playing around with Extension methods in C# and they're pretty damn cool.
To add your own method to a Type:
- First create a static class, and inside it make a static method with your chosen method signature. The important thing to note is that the method takes as an argument 'this object obj'. This tells the compiler that this method should be callable from type 'object'. The 'this' keyword is a little confusing but it is really to differntiate the argument from a regular static method which accepts an object arg
My method 'SayHello' simply returns the string "Hello Joe" - a trivial and narcissistic example :)

- Now if you create any instance of the object type in your code (the namespace that hosts your extension method must be imported) the SayHello() extension method is available!
It is also included in every derived type - which in .NET is every single type! (e.g. Int32)

This is about as trivial an example as you are likely to find on extension methods but they can be extremely useful - for example, the whole LINQ infastructure is made with extension methods.
Enjoy