読者です 読者をやめる 読者になる 読者になる

Enumerable.Cast<T> は int を long にキャストできない

Enumerable.Cast メソッドで、要素を int から long にキャストすることは出来ないようです。

$ csharp
Mono C# Shell, type "help;" for help

Enter statements below.
csharp> var xs = new[] { 1 };
csharp> xs.Cast<long>(); // System.InvalidCastException

Enumerable.Cast extension method fails to cast from int to long, why? [duplicate] によると、ボックス化解除するときに型が異なるのがいけないようです。

csharp> int x = 10;
csharp> object o = x; // ボックス化
csharp> long b = (long)o; // だめ。System.InvalidCastException
csharp> long b = (int)o; // OK
csharp> b
10