从方法返回可为空的 GCHandle

本文关键字:GCHandle 方法 返回 | 更新日期: 2023-09-27 17:57:10

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

从方法返回可为空的 GCHandle

您需要使其可为空:

public GCHandle? PacketToGCHandle(PacketAdmin packet)

这是以下的简短版本:

public Nullable<GCHandle> PacketToGCHandle(PacketAdmin packet)

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