En cualquier lenguaje de programación, tenga cuidado al usar Nulls. El ejemplo anterior muestra otro problema. Si usa un tipo de Nullable, eso significa que las variables instanciadas de ese tipo pueden tener el valor System.DBNull.Value; no es que haya cambiado la interpretación de establecer el valor por defecto usando "= Nada" o que el Objeto del valor ahora pueda admitir una referencia nula. Solo una advertencia ... ¡feliz codificación!
Puede crear una clase separada que contenga un tipo de valor. Un objeto creado a partir de dicha clase sería un tipo de referencia, al que se le podría asignar Nothing. Un ejemplo:
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
Clase final
'en 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()
Luego, puede elegir anulables para que haga lo que necesita. Mucho trabajo, pero si realmente lo necesita, puede hacerlo.