デリゲート(delegate)ってなんだろう?

C#のデリゲートがよくわからんという同僚さんのために、なんかいいサンプルコードを書きたいと思ったんですが、なかなか難しいですねえ。 分かりやすくて、なおかつ実用的なサンプルが思いつかないです。 おいらの中では「デリゲート = メソッド(処理)をあたかも変数のようにして使いまわせるモノ」みたいな感じの理解です…