2014-09-19 52 views
6

我在我的C#類中有一個IntPtr字段。
它擁有對C++庫中對象的引用。C#我可以檢查一個IntPtr是否爲空?

protected IntPtr ThingPtr; 

在某個階段,我可能會或可能不會初始化它。

ThingPtr = FunctionInMyCplusplusLibrary(); 

如果檢查是否爲空,我想是有道理的在這方面(以檢查它是否已被intialised與否)

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

從不。永遠。假設任何要初始化的東西。所以是的,它確實很有意義! – 2014-09-19 15:29:52

+0

一個'IntPtr'永遠不能是'null'。改用「ThingPtr == IntPtr.Zero」。 – 2014-09-19 15:31:30

+0

不完全重複,但這是一個答案,你應該閱讀http://stackoverflow.com/questions/1456861/is-intptr-zero-equivalent-to-null – Steve 2014-09-19 15:31:31

回答

25

IntPtr是值類型,不能爲空。

您要檢查它是否有(地址)0的值:

if (ThingPtr == IntPtr.Zero) 
3

IntPtr的是一個結構它永遠不能爲null,您的圖書館可以返回null,則等價的,但我希望這將是零。

3

您可以將IntPtr.Zero用於null,但它不等同於C#空值。