2010-06-30 36 views

Trả lời

119

Không, giá trị rỗng là cấu trúc. Điều gì đang xảy ra là các struct nullable có hai giá trị:

  1. Giá trị của kiểu dữ liệu (int cho int?, DateTime cho DateTime?, vv).
  2. Giá trị boolean cho biết giá trị kiểu dữ liệu đã được đặt chưa. (HasValue là tài sản.)

Khi bạn đặt giá trị của kiểu dữ liệu, cấu trúc thay đổi HasValue thành true.

What is a nullable

+4

Bạn không thể quá tải toán tử '=' trong C#. Cờ boolean được thiết lập bởi toán tử chuyển đổi ngầm, không phải bởi toán tử gán. – sepp2k

+0

oops nhờ sepp2k. – kemiller2002

6

Không, loại Nullable là trong thực tế, một struct. Thời gian chạy sẽ xử lý thông minh cài đặt của giá trị null cho bạn, cho hình thức của một loại tham chiếu, khi nó không phải là ....

+2

Tôi muốn truy vấn 'xử lý thông minh', thay vì chủ quan. Cá nhân tôi thấy hành vi khó hiểu và thường gây phiền nhiễu. – nicodemus13

24

Từ Nullable Types (C# Programming Guide):

loại Nullable là trường hợp của các struct System.Nullable.

loại Nullable đại diện cho các biến giá trị-type có thể được gán giá trị null. Bạn không thể tạo một kiểu nullable dựa trên kiểu tham chiếu. (Các loại tham chiếu đã hỗ trợ giá trị null.)

Vì vậy, không có chúng không phải là loại tham chiếu.

0

Bạn không cần phải tạo loại tham chiếu là loại có thể vô hiệu hóa vì bạn có thể chuyển giá trị rỗng vào vị trí của nó.

11

Loại dễ vỡ không phải là loại giá trị cũng như loại tham chiếu. Chúng giống như các kiểu giá trị hơn, nhưng có một vài thuộc tính của kiểu tham chiếu.

Các loại có thể vô hiệu hóa tự nhiên có thể được đặt thành null. Hơn nữa, một loại nullable không thể đáp ứng một ràng buộc chung struct. Ngoài ra, khi bạn gắn một loại có thể vô hiệu hóa với HasValue bằng false, bạn sẽ nhận được con trỏ null thay vì loại có thể đóng được có thể đóng hộp (tình huống tương tự tồn tại với việc mở hộp).

Các thuộc tính này làm cho các loại không có giá trị không có giá trị, nhưng chúng chắc chắn không phải là loại tham chiếu. Chúng là loại giá trị vô giá trị đặc biệt của riêng chúng.

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