检查指针是否指向null或有效

我必须读取/写入一个内存地址,但是有时它会使我的程序崩溃,因为它试图使用无效的地址进行操作。

所以我当前的代码是这样的:

var addy = sharp.Modules.MainModule.BaseAddress + Offsets.offset_last_watched_item;
var item = sharp.Read<int>(addy, false);
chat.Print(item.ToString());

我需要做这样的事情:

var addy = sharp.Modules.MainModule.BaseAddress + Offsets.offset_last_watched_item;
if (addy != IntPtr.Zero)
{
    var item = sharp.Read<int>((IntPtr)Offsets.offset_last_watched_item);
    if (item > 0)
    {
        chat.Print(item.ToString());
    }
}

那是检查指针是否有效以及返回值的方式,所以我不访问我不应该访问的区域?