Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 相当于Silverlight 5中的UnsafeAddrofPinnedArrayement_C#_Pinvoke_Silverlight 5.0 - Fatal编程技术网

C# 相当于Silverlight 5中的UnsafeAddrofPinnedArrayement

C# 相当于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

我正在尝试将一些pInvoke方法调用转换为Silverlight 5,但遇到了一个问题。我如何在Silverlight 5中调用UnsafeAddrOfPinnedArrayElement

 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;
        }
    }
}