我有声明为:
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)
...
是什么原因?我应该如何更改我的代码?