从方法中返回可以为空的GCHandle

时间:2013-02-03 20:05:01

标签: c# .net

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

1 个答案:

答案 0 :(得分:3)

你需要让它可以为空:

public GCHandle? PacketToGCHandle(PacketAdmin packet)

以下是:

的简短版本
public Nullable<GCHandle> PacketToGCHandle(PacketAdmin packet)

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