【问题标题】:Using a System.DateTime type as optional parameter in Visual Basic VB.Net 2010在 Visual Basic VB.Net 2010 中使用 System.DateTime 类型作为可选参数
【发布时间】:2013-02-18 19:01:20
【问题描述】:

我正在尝试将可选 System.DateTime 参数传递给 VB.NET 2010 中的构造函数。

...
Public Sub New(Optional ByVal givendate As System.DateTime = System.DateTime.MinValue)
    ...

我收到一个错误“Konstanter Ausdruck erforderlich”,翻译为“需要恒定值”。我试图用 MinValue 填充一个变量,但我必须将此变量设为只读,这在尝试将默认值传递给可选参数时会导致完全相同的问题。 有没有办法将 MinValue 作为默认值传递给可选的 DateTime (实际上是 Date 类型)。 感谢您的听众。

【问题讨论】:

    标签: parameters constructor vb.net-2010 default-value optional


    【解决方案1】:

    在此期间我找到了一个解决方案(感谢 vbdotnetformums.com 的人们,所以我想分享结果:

    第一个可能的解决方案是将参数定义为 Object,将默认值定义为 Nothing。然后投射日期时间。

    第二种更简洁的解决方案(也是我遵循的)是重载构造函数。

    这是 IanRyder (vbdotnetforums.com) 的解决方案:

    Public Class MyClassExample
      Public Property DateToUseInClass As DateTime
    
      Public Sub New()
        DateToUseInClass = System.DateTime.Now
      End Sub
    
      Public Sub New(ByVal GivenDate As System.DateTime)
        DateToUseInClass = GivenDate
      End Sub
    End Class
    

    然后我可以实现我想要的行为:

    Dim myVariable As New MyClassExample
    
    Dim myVariable As New MyClassExample(DateTime.Today.AddDays(-1))
    

    它完全按照我想要的方式工作。我希望有一天别人会从中受益。

    【讨论】:

      【解决方案2】:

      您可以将Nothing设置为函数参数的默认值,然后在函数中设置今天的日期时间

      Public Sub New(Optional ByVal fDate As System.DateTime = Nothing)
              If fDate = Nothing Then
                  fDate = Now
              End If
          End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-04
        • 2012-11-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-11
        • 2013-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多