2011年05月12日
川俣晶の縁側技術関連執筆情報『C#ショートコードプログラミング』読者サポート total 3418 count

C#ショートコードプログラミング・補遺・雑多な型のデータを含むコレクションから特定の型のデータだけ扱う

Written By: 川俣 晶連絡先

対応バージョン: C# 3.5

 雑多な型のデータを含むコレクションから特定の型のデータだけ処理したいとします。nullも対象外とします。

OLD CODE: §

using System;

using System.Linq;

class Program

{

    static void Main(string[] args)

    {

        object[] obj = { "abc", null, 123 };

        foreach (var n in obj)

        {

            if (n is string)

            {

                Console.WriteLine("{0} has {1} characters", n, ((string)n).Length);

            }

        }

    }

}

NEW CODE: §

using System;

using System.Linq;

class Program

{

    static void Main(string[] args)

    {

        object[] obj = { "abc", null, 123 };

        foreach (var n in obj.OfType<string>())

        {

            Console.WriteLine("{0} has {1} characters", n, n.Length);

        }

    }

}

実行結果: §

abc has 3 characters

解説: §

 OfTypeメソッド。うっかり見落としていましたが、強力です。これを使うだけで、特定の型のオブジェクトだけ抽出できます。もちろん、その型に変換可能なオブジェクトも含まれます。クエリ式で特定の型を除外する必要も無くなります。