0

想要这样做,但 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;
}
4

1 回答 1

3

你需要使它可以为空:

public GCHandle? PacketToGCHandle(PacketAdmin packet)

这是一个简短的版本:

public Nullable<GCHandle> PacketToGCHandle(PacketAdmin packet)

它的值(如果存在)可以通过Value属性获得,HasValue属性表示是否null存在。

于 2013-02-03T20:14:30.823 回答