2010-12-28 24 views

Trả lời

17

Vâng, đúng vậy. Từ các đại diện documentation

Các văn bản về giá trị của các đối tượng hiện tại Nullable<T> nếu HasValue tài sản là đúng, hoặc một chuỗi rỗng ("") nếu HasValue sở hữu là sai.

Cũng lưu ý rằng Nullable<T>.EqualsNullable<T>.GetHashCode không ném trong trường hợp này nhưng điều đó Nullable<T>.GetTypekhông ném. Điều này là do Object.Equals, Object.GetHashCodeObject.ToString bị ghi đè cho Nullable<T> nhưng Object.GetType không phải là vì nó không thể vì nó không được đánh dấu là virtual).

+0

ok, cảm ơn bạn đã trả lời. nhưng làm thế nào bạn nghĩ là nó đúng cách? bởi vì nếu bạn sử dụng String tmp = null; tmp.ToString() nó sẽ tăng ngoại lệ –

+0

Bởi vì một kiểu nullable với 'HasValue' là false không phải là tham chiếu' null'. Từ một quan điểm khái niệm, một kiểu nullable thể hiện một kiểu giá trị với khả năng giá trị là "mất tích". Chúng ta sử dụng 'null' để biểu diễn khi giá trị bị thiếu, nhưng điều này không giống với tham chiếu' null'. Lưu ý rằng 'tmp.Value' sẽ ném vào trường hợp' tmp' là một thể hiện của một kiểu nullable với 'HasValue' là false. Giá trị bị thiếu nên cố gắng để có được giá trị nói nên và ném cho phù hợp. – jason

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