На любом языке программирования будьте осторожны при использовании нулей.В приведенном выше примере показана другая проблема.Если вы используете тип Nullable, это означает, что переменные, созданные из этого типа, могут содержать значение System.DBNull.Value;не то, чтобы он изменил интерпретацию установки значения по умолчанию с помощью «= Nothing» или что объект значения теперь может поддерживать нулевую ссылку.Просто предупреждение ... счастливого кодирования!
Вы можете создать отдельный класс, содержащий тип значения.Объект, созданный из такого класса, будет ссылочным типом, которому можно присвоить Nothing.Пример:
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
Конечный класс
'в 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
Затем вы можете выбирать и изменять списки, чтобы сделать то, что вам нужно.Много работы - но если вам это действительно нужно, вы можете это сделать.