2014-09-19 9 views
6

Mam pole IntPtr w mojej klasie C#.
Zawiera odwołanie do obiektu w bibliotece C++.C# Czy mogę sprawdzić, czy wartość IntPtr jest zerowa?

protected IntPtr ThingPtr; 

Na pewnym etapie mogę go zainicjować lub nie.

ThingPtr = FunctionInMyCplusplusLibrary(); 

Zastanawiam się, czy sprawdzenie czy jest zerowy sens w tym kontekście (w celu sprawdzenia, czy został on intialised lub nie)

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

Nigdy. zawsze. zakładać, że WSZYSTKO zostanie zainicjowane. Więc tak, to ma sens! –

+0

'' IntPtr' nigdy nie może mieć wartości 'null'. Zamiast tego użyj 'ThingPtr == IntPtr.Zero'. –

+0

Niezupełnie duplikat, ale jest to odpowiedź, którą powinieneś przeczytać http://stackoverflow.com/questions/1456861/is-intptr-zero-equivalent-to-null – Steve

Odpowiedz

25

IntPtr jest typ wartości i nie może być null.

Chcesz sprawdzić, czy ma ona wartość (adres) 0:

if (ThingPtr == IntPtr.Zero) 
3

IntPtr jest struct nigdy nie może być null, biblioteka może zwrócić równowartość zerowa, ale spodziewam się, że będzie zero.

3

Możesz użyć IntPtr.Zero dla wartości null, jednak nie jest to odpowiednik wartości C#.

Powiązane problemy