为什么我不能将int []转换为IEnumerable <object>?

时间:2018-01-24 15:41:29

标签: c# casting covariance

在C#中,当object变量(恰好包含整数数组)作为IEnumerable<object>时,我得到了一些奇怪的结果。

object arr = new[] {1, 2, 3};
var tst1 = arr as IEnumerable<int>;
var tst2 = arr as IEnumerable<object>;

当这个运行时,第一个演员成功,但第二个演员失败。但是,如果我在Visual Studio中调试此代码并在立即窗口或监视窗格中评估arr as IEnumerable<object>,则转换成功。所以我有几个问题:

1)为什么演员表无效?

2)为什么调试器能够执行强制转换?

奖励积分:

- T[]真的实现了IEnumerable<T>吗? int真的是object吗?

- 当转换为具有协变泛型参数的类型时,哪些类型对实例有效?

0 个答案:

没有答案