En cualquier lenguaje de programación, tener cuidado al usar valores nulos. El ejemplo anterior muestra otro problema. Si usa un tipo de Nullable, eso significa que las variables instanciadas de ese tipo pueden contener el valor System.DBNull.Valor; no es que haya cambiado la interpretación de establecer el valor a predeterminado usando "= Nothing" o que el Object del valor ahora puede soportar 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 Nada. Un ejemplo:
Public Class DateTimeNullable
Private _value As DateTime
'properties
Public Property Value() As DateTime
Get
Return _value
End Get
Set(ByVal value As DateTime)
_value = value
End Set
End Property
'constructors
Public Sub New()
Value = DateTime.MinValue
End Sub
Public Sub New(ByVal dt As DateTime)
Value = dt
End Sub
'overridables
Public Overrides Function ToString() As String
Return Value.ToString()
End Function
End Class
'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()
' Output:
'test1: Succeeded()
'test2: Failed()
'.ToString() = 4/10/2012 11:28:10 AM
'.Value.ToString() = 4/10/2012 11:28:10 AM
entonces usted podría escoger y elegir overridables para que haga lo que necesita. Mucho trabajo, pero si realmente lo necesita, puede hacerlo.
Además de la respuesta de John Gant a continuación, también puede verificar si la variable datetime = Nothing (Observe el = en lugar de "is"). – NYSystemsAnalyst
Gracias, usando Dim boolNotSet As Boolean = d = Nada parece ser la solución más simple en este momento. Interesante con el casting Nullable nunca visto antes de – Muleskinner
@Chris - Creo que está usando VB –