C#我可以检查IntPtr是否为空?

时间:2014-09-19 15:27:24

标签: c# null intptr

我的C#类中有一个IntPtr字段 它包含对C ++库中对象的引用。

protected IntPtr ThingPtr;

在某个阶段,我可能会或可能不会初始化它。

ThingPtr = FunctionInMyCplusplusLibrary();

我想知道在这种情况下检查它是否为空是有意义的(检查它是否已被初始化)

if(ThingPtr == null)
{
    //Do stuff
}

3 个答案:

答案 0 :(得分:30)

IntPtr是值类型,不能为null。

您想检查它的值是否为(地址)0:

if (ThingPtr == IntPtr.Zero)

答案 1 :(得分:4)

IntPtr是一个永远不能为null的结构,你的库可能返回null的等价物,但我希望它是零。

答案 2 :(得分:3)

您可以将IntPtr.Zero用于null,但它不等同于C#null值。