Seien Sie in jeder Programmiersprache vorsichtig, wenn Sie Nullen verwenden. Das obige Beispiel zeigt ein anderes Problem. Wenn Sie einen Typ von Nullable verwenden, bedeutet dies, dass die von diesem Typ instanziierten Variablen den Wert System.DBNull.Value enthalten können. nicht, dass es die Interpretation geändert hat, den Wert mit "= Nothing" auf den Standardwert zu setzen, oder dass das Objekt des Werts jetzt eine Nullreferenz unterstützen kann. Nur eine Warnung ... viel Spaß beim Codieren!
Sie können eine separate Klasse erstellen, die einen Werttyp enthält. Ein aus einer solchen Klasse erstelltes Objekt wäre ein Referenztyp, dem Nothing zugewiesen werden könnte. Ein Beispiel:
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
Klasse beenden
'in 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()
Dann können Sie Overridables auswählen, damit es das tut, was Sie brauchen. Viel Arbeit - aber wenn Sie es wirklich brauchen, können Sie es tun.