C# 相当于Silverlight 5中的UnsafeAddrofPinnedArrayement
我正在尝试将一些pInvoke方法调用转换为Silverlight 5,但遇到了一个问题。我如何在Silverlight 5中调用UnsafeAddrOfPinnedArrayElementC# 相当于Silverlight 5中的UnsafeAddrofPinnedArrayement,c#,pinvoke,silverlight-5.0,C#,Pinvoke,Silverlight 5.0,我正在尝试将一些pInvoke方法调用转换为Silverlight 5,但遇到了一个问题。我如何在Silverlight 5中调用UnsafeAddrOfPinnedArrayElement public int Read(byte[] buffer, int index, int length) { var gch = GCHandle.Alloc(buffer); try { //Desktop .NET F
public int Read(byte[] buffer, int index, int length)
{
var gch = GCHandle.Alloc(buffer);
try
{
//Desktop .NET Framework code:
//var ptr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, index);
//WHAT IS THE SL 5 Equivalent here?
//TODO Call some pinvoke code that requires 'ptr'
}
finally
{
gch.Free();
}
}
从我读到的UnsafeAddRofPinnedArrayement只是获取数组中元素的内存地址,为什么不自己实现呢?您还可以避免再次分配整个缓冲区
public int Read(byte[] buffer, int index, int length)
{
unsafe
{
fixed(byte *ptr = buffer)
{
byte *ptr = ptr + index;
}
}
}