Vì có giá trị "null", loại phải là giá trị rỗng. Đây hoạt động tốt với nhiều loại tài liệu tham khảo (bất kỳ lớp bạn xác định và các tiêu chuẩn thư viện), và nếu bạn nhìn bạn sẽ thấy rằng mọi người làm sử dụng vô bất cứ khi nào họ có một đối tượng tài liệu tham khảo không có giá trị
Employee employee = Employees.Find("John Smith");
if(employee == null) throw new Exception("Employee not found");
Vấn đề này xuất hiện khi bạn sử dụng các loại giá trị như int, char hoặc float. Không giống như các kiểu tham chiếu, trỏ đến một khối dữ liệu ở một nơi khác trong bộ nhớ, các giá trị này được lưu trữ và thao tác nội tuyến (không có con trỏ/tham chiếu).
Do điều này, theo mặc định, các loại giá trị không có giá trị rỗng. Trong mã bạn cung cấp, nó là không thể cho parentID là null (Tôi thực sự ngạc nhiên khi trình biên dịch của bạn có được - Visual Studio 2008 và có thể 2005 sẽ vẽ một gạch dưới màu xanh lá cây và cho bạn biết rằng câu lệnh luôn là false) .
Để cho một int để có một giá trị null, bạn cần phải khai báo nó như nullable
int? parentID;
Bây giờ ParentID có thể chứa một giá trị null, bởi vì nó bây giờ là một con trỏ (tốt " tham chiếu ") đến số nguyên 32 bit, thay vì chỉ là số nguyên 32 bit.
Vì vậy, hy vọng bạn hiểu tại sao "giá trị ảo thuật" thường được sử dụng để đại diện cho vô với (kiểu giá trị) các loại cơ bản. Nó chỉ đơn giản là rất nhiều rắc rối, và thường là một hit hiệu suất lớn (tra cứu những gì boxing/unboxing là), để lưu trữ các loại giá trị như là một tham chiếu đến giá trị để cho phép chúng được null.
Edit: Để tham khảo thêm về boxing/unboxing (những gì bạn cần phải có một int == null), xem bài viết tại MSDN:
Boxing và Unboxing (C# Programming Guide)
Hiệu suất
Liên quan đến các bài tập đơn giản, quyền anh và unboxing là các quá trình tính toán tốn kém. Khi một loại giá trị được đóng hộp, một đối tượng mới phải được phân bổ và xây dựng. Ở mức độ thấp hơn, dàn diễn viên được yêu cầu cho unboxing cũng tốn kém tính toán. Để biết thêm thông tin, hãy xem Hiệu suất.
Bạn sẽ làm tốt hơn nhiều nếu bạn cho thấy một ví dụ ít nhất. – GEOCHET
-1: không có mã. -1: không sao cả. Có chuyện gì vậy? Cái gì không hiệu quả? –
Bạn đã đảo ngược séc (phải là parentID! = Null), nhưng tôi nghĩ câu hỏi là hợp lệ. +1 – erikkallen