| 著作一覧 |
コレクションから特定型を抜き出す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を書いてなかったのでコンパイルエラーになったわけだが、拡張メソッドらしさが満喫できてちょっとおもしろかった。
ジェズイットを見習え |