さて昨日のやつですが。
(・x・つ→http://blogs.wankuma.com/myugaru/archive/2008/03/06/126581.aspx)
あああ。C#3.0の機能を使いまくると色々ご存知の無い人が多かったかもしれません。
えっともしかしてそれで反応が薄かったのでしょうか?
拡張メソッドというのは、見ればすぐわかると思いますが以下のようなやつです。
using System;
namespace Example
{
static class Program
{
static void Test(this string s)
{
Console.WriteLine(s);
}
[STAThread]
static void Main(string[] args)
{
"おはようです".Test();
}
}
}
あるクラスを拡張するには引数の第一番目にthisつきでstaticなメソッドで定義すればよいのです。定義を入れるところは見えるところならどのnamespaceのどのclassかは関係ありません。
この書き方をすればあたかもそのクラスのメソッドのような呼び出し方ができるという仕組みです。
でも・・・実際は書き方だけの問題で↑のやつならTest(文字列)って逆にしたってコンピュータにはどっちでもいいのかもしれないです。あんまり効率とか良くはなってません。まあ人間は読みやすくなるのかもしれません。
(なんとなく嬉しいってだけだったり・・・)。
16時半くらい追記
あ、でも拡張するとクラス名じゃなくてインスタンスからメソッド呼び出しができます。むしろインスタンスからしか呼び出せませんね。そこが違うかな?
(関連記事はけーん!http://blogs.wankuma.com/rti/archive/2008/03/07/126742.aspx)