2007年07月01日
川俣晶の縁側ソフトウェア技術雑記total 4232 count

C# 2.0で匿名メソッドを使う簡潔さと柔軟性を実感する瞬間!!

Written By: 川俣 晶連絡先

 こういうコードがありました。

items.Add(new SimpleMenuItem("掲示板を読む [未読" + BBS.Get未読Count() + "件]", readbbs));

items.Add(new SimpleMenuItem("掲示板 全未読一気読み", readbbsIkki));

 ここで、readbbsとreadbbsIkkiはどちらもメソッドです。

 しかし、この2つはほとんど同じなので、1つのメソッドにまとめたいと思いました。

 一気読みするか否かをbool引数で渡すようにしたいと思いますが、SimpleMenuItemのコンストラクタの第2引数のデリゲート型には引数の定義がありません。まあ、定義があっても渡しようが無いですけどね。このメソッドを呼ぶのはSimpleMenuItemのインスタンスであって、このコードが書かれたメソッドではありませんから。

 ではどう書き直せば良い?

 一瞬、簡潔に書けないか……と思いそうになりましたが、よく考えると小さな匿名メソッドを1つ挟めば簡単に解決できることに気付きました。

items.Add(new SimpleMenuItem("掲示板を読む [未読" + BBS.Get未読Count() + "件]",

    delegate() { return readbbs(false); }));

items.Add(new SimpleMenuItem("掲示板 全未読一気読み",

    delegate() { return readbbs(true); }));

 あまりにシンプルな解決策なので、我ながら半信半疑で書いてみたら意図通りに通りました。

 うーん、こんなコーディングに慣れたら、もう匿名メソッド/関数の無い言語には戻れない身体になってしまいそう……。

余談・論よりソース §

 オータムマガジンを見ていれば分かると思いますが、最近もうオータムマガジンで理屈を語っていません。なぜかといえば、言葉でいくら理屈を語ったところで、それは本当の意味での説得力にならないと思うからです。本当なら、言葉を語るよりもソースを書くべきなのですが、この10年ほどはどうしても上手くソースを書けませんでした。しかし、今は書けます。なので、能書きを垂れてる時間があればコードを書く……という原則をやっと実践できるようになってきました。

 というわけで、この文章は理屈を述べるものではなく、ちょっと冴えた良いソース(と自分が思ったもの)を他人に見せたくなったから書いたものなのです。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2007年
07月
02日
C#2.0にて、匿名メソッドで使うデリゲート型をいちいち宣言しないで済ませる技
3days 0 count
total 10886 count
【技術雑記】の前のコンテンツ
2007年
06月
27日
難読化ツールとC#のenumは相性が悪い
3days 0 count
total 5863 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20070701020923
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.