在 Visual Basic VB.Net 2010 中使用 System.DateTime 类型作为可选参数
Posted
技术标签:
【中文标题】在 Visual Basic VB.Net 2010 中使用 System.DateTime 类型作为可选参数【英文标题】:Using a System.DateTime type as optional parameter in Visual Basic VB.Net 2010 【发布时间】: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 类型)。 感谢您的听众。
【问题讨论】:
【参考方案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
【讨论】:
以上是关于在 Visual Basic VB.Net 2010 中使用 System.DateTime 类型作为可选参数的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Basic VB.Net 2010 中使用 System.DateTime 类型作为可选参数
在visual basic(而不是VB.net)中创建一个错误弹出框