C#-为什么一种类型不能将int *强制转换为int []

时间:2019-05-24 16:21:43

标签: c#

我的目标: 在下面的情况下,我试图将一个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 []'

0 个答案:

没有答案