可能性の重複:
Puzzling Enumerable.Cast InvalidCastExceptionEnumerable.Cast <T>拡張メソッドをintからlongにキャストできません。なぜですか?
こんにちは、
私はちょうどそれはlong
にint
からキャストすることができないようだ... Enumerable.Cast<T>
拡張メソッドではかなり奇妙な何かに気づきましたこのキャストは完全に合法ですが
次のコードは、InvalidCastException
で失敗します。
foreach (var item in Enumerable.Range(0,10).Cast<long>())
{
Console.WriteLine(item);
}
しかし、私は同等であると考え、このコードは、仕事ん:
foreach (var item in Enumerable.Range(0,10).Select(i => (long)i))
{
Console.WriteLine(item);
}
誰もがその動作を説明できますか?私たちは、模倣することができ
this.<>2__current = (TResult)this.<obj>5__ab;
:
可能な重複:http://stackoverflow.com/questions/445471 –
はい、あなた」そうです...私の検索でそれを逃した –
私は答えのどれも実際に質問*なぜ*に答えて驚いています。答えはintからlong **への変換がキャスト**ではないからです。 *変換*です。 C#は人を混乱させるだけであるため(同じように)、C#は両方とも同じ構文を使用することは残念です。 '.Cast()'を使って、カスタム定義の明示的変換演算子を呼び出すこともできません。これはキャストでもないからです。 –
Timwi