Dans tout langage de programmation, être prudent lors de l'utilisation de valeurs Null. L'exemple ci-dessus montre une autre question. Si vous utilisez un type de prendre la valeur null, ce qui signifie que les variables instanciées à partir de ce type peuvent contenir la valeur du Système.DBNull.Valeur; non pas qu'il a changé l'interprétation de la définition de la valeur par défaut à l'aide de "= Rien", ou que l'Objet de la valeur peut maintenant prendre en charge une référence null. Juste un avertissement... amusez-vous!
Vous pouvez créer une catégorie distincte contenant une valeur de type. Un objet créé à partir d'une telle classe est un type de référence, qui pourrait être attribué Rien. Un exemple:
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
Fin De La Classe
"dans 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
Ensuite, vous pouvez choisir overridables pour lui faire faire ce dont vous avez besoin. Beaucoup de travail, mais si vous en avez vraiment besoin, vous pouvez le faire.