我想将一个传递byte[]给采用IntPtrC#中的Parameter 的方法,这可能吗?如何?
byte[]
IntPtr
不确定是否要将IntPtr放入数组,但是可以使用Mashal.Copy复制数据以供非托管代码使用:
IntPtr unmanagedPointer = Marshal.AllocHGlobal(bytes.Length); Marshal.Copy(bytes, 0, unmanagedPointer, bytes.Length); // Call unmanaged code Marshal.FreeHGlobal(unmanagedPointer);
另外,您可以声明具有一个属性的结构,然后使用Marshal.PtrToStructure,但这仍然需要分配非托管内存。
编辑: 另外,正如Tyalis指出的,如果不安全的代码是您的选择,那么您也可以使用 固定的 代码