Why can't I check if a 'DateTime' is 'Nothing'?

前端 未结 8 2066
天命终不由人
天命终不由人 2020-12-07 17:18

In VB.NET, is there a way to set a DateTime variable to \"not set\"? And why is it possible to set a DateTime to Nothing, but not<

8条回答
  •  醉话见心
    2020-12-07 17:59

    Some examples on working with nullable DateTime values.

    (See Nullable Value Types (Visual Basic) for more.)

    '
    ' An ordinary DateTime declaration. It is *not* nullable. Setting it to
    ' 'Nothing' actually results in a non-null value.
    '
    Dim d1 As DateTime = Nothing
    Console.WriteLine(String.Format("d1 = [{0}]\n", d1))
    ' Output:  d1 = [1/1/0001 12:00:00 AM]
    
    ' Console.WriteLine(String.Format("d1 is Nothing? [{0}]\n", (d1 Is Nothing)))
    '
    '   Compilation error on above expression '(d1 Is Nothing)':
    '
    '      'Is' operator does not accept operands of type 'Date'.
    '       Operands must be reference or nullable types.
    
    '
    ' Three different but equivalent ways to declare a DateTime
    ' nullable:
    '
    Dim d2? As DateTime = Nothing
    Console.WriteLine(String.Format("d2 = [{0}][{1}]\n", d2, (d2 Is Nothing)))
    ' Output:  d2 = [][True]
    
    Dim d3 As DateTime? = Nothing
    Console.WriteLine(String.Format("d3 = [{0}][{1}]\n", d3, (d3 Is Nothing)))
    ' Output:  d3 = [][True]
    
    Dim d4 As Nullable(Of DateTime) = Nothing
    Console.WriteLine(String.Format("d4 = [{0}][{1}]\n", d4, (d4 Is Nothing)))
    ' Output:  d4 = [][True]
    

    Also, on how to check whether a variable is null (from Nothing (Visual Basic)):

    When checking whether a reference (or nullable value type) variable is null, do not use = Nothing or <> Nothing. Always use Is Nothing or IsNot Nothing.

提交回复
热议问题