2014-09-19 16 views
6

Ho un campo IntPtr nella mia classe C#.
Contiene un riferimento a un oggetto in una libreria C++.C# Posso controllare se un IntPtr è nullo?

protected IntPtr ThingPtr; 

In alcuni casi è possibile inizializzarlo o meno.

ThingPtr = FunctionInMyCplusplusLibrary(); 

sto chiedendo se verificare se è null senso in questo contesto (per verificare se è stato intialised o meno)

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

Mai. mai. supponiamo che QUALSIASI venga inizializzato. Quindi sì, ha perfettamente senso! –

+0

Un 'IntPtr' non può mai essere 'null'. Usa invece 'ThingPtr == IntPtr.Zero'. –

+0

Non esattamente un duplicato ma questa è una risposta che dovresti leggere http://stackoverflow.com/questions/1456861/is-intptr-zero-equivalent-to-null – Steve

risposta

25

IntPtr è un tipo di valore e non può essere nullo.

si desidera controllare se ha un valore (indirizzo) 0:

if (ThingPtr == IntPtr.Zero) 
3

IntPtr è una struct non può mai essere nullo, la libreria può restituire l'equivalente di nulla, ma mi aspetto che sarebbe zero.

3

È possibile utilizzare IntPtr.Zero per null, tuttavia non è equivalente al valore Null C#.