C#のdelegateをTemplateMethodの代わりに使う
とある勉強会でC#2.0の新機能を議論する機会があった。
「匿名メソッド」「イテレータ」について説明を聞いたが、いずれもDelegate、コールバックに関わる。
イテレータはRubyで言うならば、ブロックそのもの。
例: array.sort{|a, b| b<=>a}
Perlにも、ハッシュのソートで似たような構文がある。
Cのクイックソート関数 qsort も比較関数をコールバックに使っている。
匿名メソッドは、無名Delegateと言ってよい。
Javaなら、Threadを使ってインナークラスを実装する時とかに似ている。
C#のDelegateはEventで使うサンプルしか知らないので、自分はまだ理解し切れていないのだが、Delegateの他の例を教えてもらった。
彼によると、DBコネクションの管理に使ってみる、とのこと。
つまり、DBコネクションをオープンしてクローズするルーチン処理を行うメソッドの引数に、デレゲートを置き、そのデレゲート内部でSQL発行の処理を行う。
これってまさにTemplateMethodそのもの。
こんな使い方があったとは!
C#がJavaと大きく違う所は、Delegateにある。
Javaならインターフェイスでベタに書かざるを得ない所が、C#ならすっきり書けるが、慣れないと可読性が落ちる。
コールバックという概念は奥が深い。
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- TwitterやFacebookは人力キュレーションツールとして使う(2022.10.02)
- 「現代病「集中できない」を知力に変える 読む力 最新スキル大全」の感想(2022.08.28)
- 人類は海辺から生まれた~水生類人猿説が面白い(2022.08.09)
- 戦前の日本人の気質はまだ成熟していない青年期と同じだった(2022.06.14)
- 物理学を攻略するためのマップ(2022.04.18)
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
コメント