は、次のコードスニペットを参照してください:IDictionary <TKey、TValue>をIEnumerable <object>にアップキャスティングするのが失敗するのはなぜですか?
(IEnumerable<object>)new Dictionary<string, string>()
上記キャストが無効なキャスト例外がスローされます。
実際には、IDictionary<TKey, TValue>
もICollection<T>
を実装しているため、間接的にIEnumerable<out T>
を実装しています。つまり、キャスト全体が有効である必要があります。実際に
は、私にとってそれは私がデバッガ時計スロット上の全キャスト、を実行した場合、それはを動作することをさらに奇妙です!
何が起こっているの?
@PatrickHofmanそうでないのはなぜ?共変タイプのパラメータを持つ 'IEnumerable'というインターフェースが1つしかありません。共分散が値の型ではうまくいかなくても... ...間違っていますか? –
@CodeCasterインターフェイス自体が 'IEnumerable ' –
@CodeCasterArgh、https://msdn.microsoft.com/en-us/library/9eekhta0(v=vs.110)という意味です。aspx –