2014-09-19 12 views
6

Tôi có một trường IntPtr trong lớp C# của tôi.
Nó giữ một tham chiếu đến một đối tượng trong thư viện C++.C# Tôi có thể kiểm tra xem IntPtr có rỗng không?

protected IntPtr ThingPtr; 

Ở giai đoạn nào đó, tôi có thể hoặc không thể khởi chạy.

ThingPtr = FunctionInMyCplusplusLibrary(); 

Tôi tự hỏi nếu kiểm tra xem nó là null có ý nghĩa trong bối cảnh này (để kiểm tra xem nó đã được intialised hay không)

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

Không bao giờ. không bao giờ. giả sử bất cứ điều gì được khởi tạo. Vì vậy, có, nó làm cho ý nghĩa hoàn toàn! –

+0

Một 'IntPtr' không bao giờ có thể là' null'. Sử dụng 'ThingPtr == IntPtr.Zero' để thay thế. –

+0

Không chính xác là một bản sao nhưng đây là câu trả lời mà bạn nên đọc http://stackoverflow.com/questions/1456861/is-intptr-zero-equivalent-to-null – Steve

Trả lời

25

IntPtr là một loại giá trị và không thể được null.

Bạn muốn kiểm tra xem nó có một giá trị (địa chỉ) 0:

if (ThingPtr == IntPtr.Zero) 
3

IntPtr là một struct nó không bao giờ có thể được null, thư viện của bạn có thể trở lại tương đương với null nhưng tôi hy vọng rằng sẽ số không.

3

Bạn có thể sử dụng IntPtr.Zero cho null, tuy nhiên nó không tương đương với giá trị C# null.

Các vấn đề liên quan