2014-09-19 2 views
6

내 C# 클래스에 IntPtr 필드가 있습니다.
C++ 라이브러리에서 객체에 대한 참조를 보유합니다.C# IntPtr이 null인지 확인할 수 있습니까?

protected IntPtr ThingPtr; 

어떤 단계에서 나는 초기화 할 수도 있고하지 않을 수도 있습니다. null의 여부를 확인 만약 내가 궁금하네요

ThingPtr = FunctionInMyCplusplusLibrary(); 

이 맥락에서 의미가

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

이제까지. 초기화 될 것으로 가정하십시오. 그래서 예, 그것은 완전한 의미를가집니다! –

+0

'IntPtr'은 결코 'null'일 수 없습니다. 대신에'ThingPtr == IntPtr.Zero'를 사용하십시오. –

+0

정확히 중복되지는 않지만 답변을 읽어보십시오. http://stackoverflow.com/questions/1456861/is-intptr-zero-equivalent-to-null – Steve

답변

25

IntPtr는 값 형식입니다 (이 intialised되었는지의 여부를 확인하기 위해) 및 null 일 수 없습니다.

당신은 (주소) 0의 값을 갖고 있는지 여부를 확인하려면 :

if (ThingPtr == IntPtr.Zero) 
3

를 IntPtr은 null이 될 수 없다 구조체이며, 라이브러리가 null의 상당을 반환 할 수 있지만, 그게 될 것 기대 제로.

3

null에는 IntPtr.Zero를 사용할 수 있지만 C# null 값과 같지는 않습니다.

관련 문제