2011-06-29 34 views

Trả lời

33

Loại tham chiếu được lưu dưới dạng tham chiếu (như con trỏ) cho một đối tượng đối tượng.
null có nghĩa là tham chiếu không trỏ đến một thể hiện của đối tượng.

Loại giá trị được lưu trữ dưới dạng giá trị mà không có bất kỳ tham chiếu nào.
Do đó, không có ý nghĩa khi có một kiểu giá trị null — loại giá trị theo định nghĩa chứa một giá trị.

Nullable<T> là loại giá trị có cờ HasValue có thể là false để cho biết rằng không có giá trị. Giá trị này vẫn có giá trị (khi HasValuefalse, Valuedefault(T)), nhưng cờ HasValue cho bạn biết bỏ qua giá trị.
Không có gì để làm với null, ngoại trừ CLR tự động mở hộp số null được đóng hộp thành Nullable<T> với HasValue được đặt thành false.

+0

chúng tôi có thể tạo các biến nullable bằng cách sử dụng? nhà điều hành. ví dụ, int? x = null; – Shekhar

+3

@Shekhar: Anh ấy nhận ra điều đó. Nó không liên quan gì đến 'null'. – SLaks

+0

cảm ơn bạn đã giải thích. – Shekhar

0

Loại giá trị như 'Int32' được lưu trữ bằng cách sử dụng ba mươi hai bit dung lượng lưu trữ. Có chính xác 4,294,967,296 giá trị có thể được đại diện bởi 32 bit, và Int32 có thể chứa 4,294,967,296 giá trị khác nhau. Nếu -2,147,483,648 không phải là giá trị Int32 hợp lệ, nó có thể có thể sử dụng để đại diện cho "null", nhưng thực tế là biểu diễn nhị phân của nó không phải là tất cả các số không sẽ làm phức tạp mọi thứ. Ngược lại, số lượng các kết hợp bit có thể có trong một loại tham chiếu vượt quá số lượng các tham chiếu hợp lệ có thể có, do đó không khó để đặt trước một kết hợp bit để biểu diễn "null".

+0

Bất kỳ tham chiếu nào (bài viết) về những gì bạn đang giải thích? Tôi vẫn chưa rõ về ý tưởng bạn đặt. – Marshal

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