我的目标: 在下面的情况下,我试图将一个int数组的地址存储到整数指针变量中,然后将该指针转换回一个整数数组。
我的问题: 运行以下代码后,我得到一个错误,指示无法执行类型转换。我的问题是为什么 C#本质上无法像C / C ++那样执行这种类型转换。
说明/背景: 需要澄清的是,我知道在这种情况下在C#中使用指针功能不是必需的,但是我想了解为什么无法执行上述类型转换才能更好地了解C#中的内存工作原理。
public static myMethod(){
// Get the address of the data array and store it in the object
MyClass mcElement = new MyClass();
unsafe {
fixed (int* iElement = &(someIntArray[0]))
{
mcElement.iaData = iElement;
}
...
Foo((int[])mcElement.iaData); // ERROR: cannot perform typcast
}
}
public Foo(int[]){
...
}
public class MyClass {
unsafe public int* iaData;
...
}
确切的错误:无法将类型'int *'转换为'int []'