ArrayTypeMismatchException

时间:2014-01-04 16:06:14

标签: c# covariance

我正在研究C#中的协方差和逆变。

我已经了解了很多,但我正在寻找更多技术细节。我理解,由于数组协方差,我可以隐式地将string [] array = new string[1]强制转换为object [] moreGeneralArray = array

在此数组中存储int将抛出ArrayTypeMismatchException

我正在研究如何检查这些技术细节?似乎隐藏在object []类型后面的某种类型告诉运行时它实际上是一个字符串数组?

1 个答案:

答案 0 :(得分:1)

当您隐式地将string[]类型的对象强制转换为object[]时,后备存储仍为string[]类型。

根据Eric Lippert的说法,这种特殊的协方差被打破了。他说'它被添加到CLR中,因为Java需要它,而CLR设计者希望能够支持类似Java的语言。'

Read more on his blog