Trong bất kỳ ngôn ngữ lập trình nào, hãy cẩn thận khi sử dụng Nulls. Ví dụ trên cho thấy một vấn đề khác. Nếu bạn sử dụng một kiểu Nullable, điều đó có nghĩa là các biến được khởi tạo từ kiểu đó có thể giữ giá trị System.DBNull.Value; không phải là nó đã thay đổi cách diễn giải của việc đặt giá trị thành mặc định bằng cách sử dụng "= Không có gì" hoặc Đối tượng của giá trị hiện có thể hỗ trợ một tham chiếu rỗng. Chỉ là một cảnh báo ... mã hóa vui vẻ!
Bạn có thể tạo một lớp riêng biệt chứa một kiểu giá trị. Một đối tượng được tạo từ một lớp như vậy sẽ là một kiểu tham chiếu, có thể được gán Không có gì. Một ví dụ:
Public Class DateTimeNullable
Private _value As DateTime
Public Property Value() As DateTime
Get
Return _value
End Get
Set(ByVal value As DateTime)
_value = value
End Set
End Property
Public Sub New()
Value = DateTime.MinValue
End Sub
Public Sub New(ByVal dt As DateTime)
Value = dt
End Sub
Public Overrides Function ToString() As String
Return Value.ToString()
End Function
Kết thúc lớp học
'trong Main ():
Dim dtn As DateTimeNullable = Nothing
Dim strTest1 As String = "Falied"
Dim strTest2 As String = "Failed"
If dtn Is Nothing Then strTest1 = "Succeeded"
dtn = New DateTimeNullable(DateTime.Now)
If dtn Is Nothing Then strTest2 = "Succeeded"
Console.WriteLine("test1: " & strTest1)
Console.WriteLine("test2: " & strTest2)
Console.WriteLine(".ToString() = " & dtn.ToString())
Console.WriteLine(".Value.ToString() = " & dtn.Value.ToString())
Console.ReadKey()
Sau đó, bạn có thể chọn và chọn các mục ghi đè để làm cho nó thực hiện những gì bạn cần. Rất nhiều việc - nhưng nếu bạn thực sự cần, bạn có thể làm được.