0

我有声明为:

        internal delegate bool readDelegate(out byte data);

在某些时候,我想获得一个指向委托实例的函数指针:

        readDelegate reader = (out byte data) => 
            {
                Console.WriteLine("Managed output! opening");
                if (stream.CanRead)
                {
                    data = (byte)stream.ReadByte();
                    return true;
                }
                else
                {
                    data = 0;
                    return false;
                }
            };

如果可以的话,它会从流中读取一个单字节。

但是当我尝试获取函数指针时,如下所示:

IntPtr foo = Marshal.GetFunctionPointerForDelegate(reader);

我得到一个例外:

System.NotSupportedException was unhandled
  Message="0x80131515"
  StackTrace:
    в System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(Delegate d)
...

是什么原因?我应该如何更改我的代码?

4

1 回答 1

0

异常的其余信息是什么?应该有错误的解释。

无论如何,我认为这可能有效:

internal unsafe delegate bool readDelegate(byte* data);
于 2012-10-22T09:22:20.000 回答