我在我的C#類中有一個IntPtr字段。
它擁有對C++庫中對象的引用。C#我可以檢查一個IntPtr是否爲空?
protected IntPtr ThingPtr;
在某個階段,我可能會或可能不會初始化它。
ThingPtr = FunctionInMyCplusplusLibrary();
如果檢查是否爲空,我想是有道理的在這方面(以檢查它是否已被intialised與否)
if(ThingPtr == null)
{
//Do stuff
}
我在我的C#類中有一個IntPtr字段。
它擁有對C++庫中對象的引用。C#我可以檢查一個IntPtr是否爲空?
protected IntPtr ThingPtr;
在某個階段,我可能會或可能不會初始化它。
ThingPtr = FunctionInMyCplusplusLibrary();
如果檢查是否爲空,我想是有道理的在這方面(以檢查它是否已被intialised與否)
if(ThingPtr == null)
{
//Do stuff
}
IntPtr
是值類型,不能爲空。
您要檢查它是否有(地址)0的值:
if (ThingPtr == IntPtr.Zero)
IntPtr的是一個結構它永遠不能爲null,您的圖書館可以返回null,則等價的,但我希望這將是零。
您可以將IntPtr.Zero用於null,但它不等同於C#空值。
從不。永遠。假設任何要初始化的東西。所以是的,它確實很有意義! – 2014-09-19 15:29:52
一個'IntPtr'永遠不能是'null'。改用「ThingPtr == IntPtr.Zero」。 – 2014-09-19 15:31:30
不完全重複,但這是一個答案,你應該閱讀http://stackoverflow.com/questions/1456861/is-intptr-zero-equivalent-to-null – Steve 2014-09-19 15:31:31