鉴于场景:
public class Program
{
static void Main()
{
object[] covarientArray= new A[] { new A() };
object polymorphism = new A();
object test = covarientArray[0];
M(ref polymorphism);//fine up to here
M(ref covarientArray[0]);//ArrayTypeMismatchException
}
static void M(ref object o) { Console.WriteLine(o); }
}
class A {}
尝试在数组中存储错误类型的元素时引发的异常。
当尝试在数组中存储错误类型的元素时,将引发此异常。例如:
A[] invalid = new A[1];
invalid[0] = "";//I can't store a type of string within an array of type of A
这个异常是怎么发生的?为什么在调用带有ref
参数的方法时我们正在执行存储操作?