想要这样做,但GCHandle不可空。我需要GCHandle来检索与缓冲区关联的IntPtr,然后释放它,因此它不能只返回IntPtr。
public GCHandle PacketToGCHandle(PacketAdmin packet)
{
byte[] data;
bool result;
if ((data = PacketToByteData(packet)) != null)
{
GCHandle pinnedArray = GCHandle.Alloc(data, GCHandleType.Pinned);
return pinnedArray;
}
else
{
result = false;
report.BindReport(architecture.report);
}
return null;
}
答案 0 :(得分:3)
你需要让它可以为空:
public GCHandle? PacketToGCHandle(PacketAdmin packet)
以下是:
的简短版本public Nullable<GCHandle> PacketToGCHandle(PacketAdmin packet)
它的值(如果存在)可以通过Value
属性获得,HasValue
属性指示它是否为null
。