気が狂っているかもしれませんが、これは有効なキャストだと思いました:
(new int[]{1,2,3,4,5}).Cast<double>()
LinqPad がスローする理由
InvalidCastException: 指定されたキャストは無効です。
?
C# では、 からint
に直接変換できますが、 からに変換することはできdouble
ません。int
object
double
int i = 1;
object o = i;
double d1 = (double)i; // okay
double d2 = (double)o; // error
Enumerable.Cast
拡張メソッドは後者のように動作します。値を別の型に変換するのではなく、値が既に期待される型であると主張し、そうでない場合は例外をスローします。
(new int[]{1,2,3,4,5}).Select(i => (double)i)
代わりに、値を変換する動作を取得することを試みることができます。