myugaruの色々構想中・・・!

「C#」「画像処理」「XNA未対応PCでゲームIDE作りの無謀な野望」

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  98  : 記事  0  : コメント  2324  : トラックバック  59

ニュース

myugaru
仕事(昔)=ヲタク系プログラマー~マスコミ系サポートデスク
仕事(今)=電子機器系サービス業
趣味a=パズルゲーム全般、シューティングは主に見学
趣味b=画像処理関係の勉強
趣味c=プログラミング言語の勉強
趣味d=アキバ系ヲタク
趣味e=芸能アイドル系ヲタク
d,e色の強いもう一つのブログ
最新目標=シューティングゲームを作る

わんくまりんく

わんくま同盟blog C#,VB.NET掲示板

ぶろぐつーる

あわせて読みたい

はてなりんぐ

書庫

日記カテゴリ

ギャラリ

お友達

リンク

さて昨日のやつですが。

(・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

投稿日時 : 2008年3月7日 7:18

コメント

# re: 拡張メソッド 2008/03/07 9:51 IIJIMAS
集合から目的のものだけ複数のフィルターを使って抽出したり変換したりする場合に、
「Util.抽出3(Util.抽出2(Util.抽出1(ソース集合))))」
と書くよりも、
「ソース集合.抽出1().抽出2().抽出3() 」
という書き方の方が、見やすいだけでなくて、「絞り込み検索」っぽくて、人間の思考順序にあってる気がします。
上の書き方は()の入れ子もややこしいし、他の引数があったらなおさら混乱します。

ただ、他のコードや昔のコードに安易にコピペできないのが難点かも。。。

# re: 拡張メソッド 2008/03/07 15:58 myugaru
To IIJIMASさん
こんにちは、コメントありがとうございます。
なるほどメソッドの連結には都合が良いのですね。
そういえばこの拡張メソッドはLINQを実現するのに一役買っていたのでした。
なるほどLINQはメソッド連結で成立していますもんね。納得です。


# re: 拡張メソッド 2008/03/08 0:36 NyaRuRu
「Util.抽出3(Util.抽出2(Util.抽出1(ソース集合))))」

「ソース集合.抽出1().抽出2().抽出3() 」
となる部分ですが,このあたりも読んでみると面白いかもしれませんよ.
http://d.hatena.ne.jp/m-hiyama/20080117/1200530398
ポイントはこの「裏返る」感じです.

# re: 拡張メソッド 2008/03/08 2:11 myugaru
To NyaRuRuさん
CPS変換の話題なんですねー。色々そこから辿っていくとPrologだとかSchemaだとか私の知らない言語世界が広がっていました。ちょっと私の脳髄に新たな刺激が加わりましたよ!
・・・面白すぎてこんな深夜まで読みふけってしまいました^^;;つづきは明日読もうww
素敵情報ありがとうございました。

# スプライト実装用のクラス(コード編) 2008/03/11 15:42 myugaruの色々構想中・・・!
スプライト実装用のクラス(コード編)

# Burberry Sunglasses 2012/10/26 12:04 http://burberrysunglasses.moonfruit.com
I will love you until the seas run dry and the rocks crumble.I was taking care of Sally.She is a composer for the harp.Is that why you don't want to go home?How's everything? The doctor is taking my blood pressure.The doctor is taking my blood pressure.You need to workout.I heard some one laughing.Every man is fool sometimes, but none at all times.
Burberry Sunglasses http://burberrysunglasses.moonfruit.com

# mulberry purses 2012/10/28 6:53 http://www.mulberrybagsoutletukstore.co.uk/purses-
The nurse assisted the doctor in the operating room.I can do nothing but that.Money is not everything.They celebrated his birthday with a dance party.I haven't seen you for ages.Old tunes are sweetest and old friends are surest.Old tunes are sweetest and old friends are surest.All for one£¬one for all.It really takes time.I don't like what you are saying.
mulberry purses http://www.mulberrybagsoutletukstore.co.uk/purses-accessories-c-4.html

Post Feedback

タイトル
名前
Url:
コメント