我的C#类中有一个IntPtr字段 它包含对C ++库中对象的引用。
protected IntPtr ThingPtr;
在某个阶段,我可能会或可能不会初始化它。
ThingPtr = FunctionInMyCplusplusLibrary();
我想知道在这种情况下检查它是否为空是有意义的(检查它是否已被初始化)
if(ThingPtr == null)
{
//Do stuff
}
答案 0 :(得分:30)
IntPtr
是值类型,不能为null。
您想检查它的值是否为(地址)0:
if (ThingPtr == IntPtr.Zero)
答案 1 :(得分:4)
IntPtr是一个永远不能为null的结构,你的库可能返回null的等价物,但我希望它是零。
答案 2 :(得分:3)
您可以将IntPtr.Zero用于null,但它不等同于C#null值。