著作一覧 |
コレクションから特定型を抜き出すLINQの例を書いたら、もっとうまい方法をはてぶで教えてもらった。
元はこんなの。
foreach (var cb in from Control c in groupBox1.Controls where c is typeof(CheckBox) select (c as CheckBox)) { cb.Checked = false; }
確かに長いな。
で、OfTypeを使ってみる。
using System; using System.Collections; using System.Linq; public class OfType { public static void Main() { var list = new ArrayList(); list.Add(1); list.Add("abc"); list.Add(3.0); list.Add("hello"); list.Add(new ArrayList()); list.Add(new string[] { "a", "b" }); foreach (var s in list.OfType<string>()) { Console.WriteLine(s); } } }
実行すると、"abc"と"hello"だけが出力される。
(というか、この機能があれば、objectコレクションで十分に便利だな)
で、最初、using System.Linqを書いてなかったのでコンパイルエラーになったわけだが、拡張メソッドらしさが満喫できてちょっとおもしろかった。
ジェズイットを見習え |