2

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

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

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

4

2 回答 2

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))

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

于 2013-03-05T16:19:06.180 回答
1

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

Public Sub New(Optional ByVal fDate As System.DateTime = Nothing)
        If fDate = Nothing Then
            fDate = Now
        End If
    End Sub
于 2015-02-10T07:58:40.420 回答