2012年06月09日
川俣晶の縁側ソフトウェア技術雑記 total 4523 count

LINQのCastメソッドがキャストできないとき

Written By: 川俣 晶連絡先

 Visual Studio 2010(C#4/.NET Framework 4)にて。

このコードは通る §

using System;

using System.Linq;

class A { }

class B : A { }

class Program

{

    static void Main(string[] args)

    {

        B[] b = { new B() };

        Console.WriteLine(b.Cast<A>().Count());

    }

}

でも、このコードは通らない §

using System;

using System.Linq;

class Program

{

    static void Main(string[] args)

    {

        byte[] b = { 0 };

        Console.WriteLine(b.Cast<char>().Count());

    }

}

こう書き直すと通る。 §

        Console.WriteLine(b.Select(c => (char)c).Count());

説明 §

 ただのメモなので、説明はなし。