Khi tôi tuyên bố int
là nullable
int? i=null;
Có phải i
ở đây trở thành một loại tài liệu tham khảo?
Khi tôi tuyên bố int
là nullable
int? i=null;
Có phải i
ở đây trở thành một loại tài liệu tham khảo?
Câu trả lời:
Không, một nullable là một cấu trúc. Điều đang xảy ra là cấu trúc nullable có hai giá trị:
int
for int?
, DateTime
for DateTime?
, v.v.).HasValue
là tài sản.)Khi bạn đặt giá trị của kiểu dữ liệu, cấu trúc sẽ thay đổi HasValue
thành true.
Từ các loại Nullable (Hướng dẫn lập trình C #) :
Các kiểu không thể là các thể hiện của cấu trúc System.Nullable.
và
Các loại không thể biểu thị các biến loại giá trị có thể được gán giá trị null. Bạn không thể tạo loại nullable dựa trên loại tham chiếu. (Các loại tham chiếu đã hỗ trợ giá trị null.)
Vì vậy, không có họ không phải là loại tham khảo.
Các loại không có giá trị không phải là loại giá trị cũng không phải là loại tham chiếu. Chúng giống như các loại giá trị, nhưng có một vài thuộc tính của các loại tham chiếu.
Đương nhiên, các loại nullable có thể được đặt thành null
. Hơn nữa, một loại nullable không thể đáp ứng một struct
ràng buộc chung . Ngoài ra, khi bạn đóng hộp một loại nullable HasValue
bằng false
, bạn sẽ có một null
con trỏ thay vì loại nullable được đóng hộp (một tình huống tương tự tồn tại với unboxing).
Các thuộc tính này tạo ra các loại không có giá trị loại không có giá trị, nhưng chúng chắc chắn không phải là loại tham chiếu. Họ là loại giá trị nullable đặc biệt của riêng họ.
Không, loại Nullable trên thực tế là một cấu trúc. Thời gian chạy sẽ xử lý thông minh cài đặt giá trị null cho bạn, tạo ra sự xuất hiện của loại tham chiếu, khi nó không ....
Các loại Nullable không thể là loại tham chiếu.