W każdym języku programowania zachowaj ostrożność podczas używania wartości Null. Powyższy przykład pokazuje inny problem. Jeśli używasz typu Nullable, oznacza to, że zmienne, których wystąpienie pochodzi z tego typu, mogą zawierać wartość System.DBNull.Value; nie to, że zmienił interpretację ustawienia wartości na domyślną za pomocą "= Nothing" lub że obiekt wartości może teraz obsługiwać odwołanie o wartości null. Tylko ostrzeżenie ... miłego kodowania!
Możesz utworzyć oddzielną klasę zawierającą typ wartości. Obiekt utworzony z takiej klasy byłby typem referencyjnym, któremu można by przypisać Nothing. Przykład:
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
Koniec klasy
'w głównym ():
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()
Następnie możesz wybrać i wybrać overridables, aby zrobić to, czego potrzebujesz. Dużo pracy - ale jeśli naprawdę tego potrzebujesz, możesz to zrobić.