如何设置系统?datetime的空值,作为子例程中的可选参数
本文关键字:子例程 参数 空值 设置 系统 datetime 何设置 | 更新日期: 2023-09-27 18:14:16
我尝试了以下操作,但我得到了错误
需要常量表达式
Public Sub ExampleSub(ByVal Test as string,
Optional ByVal fromDate As System.Nullable(Of DateTime) = Date.Today)
'A Great sub!
End sub
这里是c#
public void ExampleSub(string Test,
System.Nullable<DateTime> fromDate = System.DateTime.Today)
{
//A Great sub!
}
Thanks in advance
默认参数不能使用非常量表达式。System.DateTime.Today
将取决于您何时运行程序,因此它不是恒定的。
使用一个常量表达式默认,然后检查,并设置fromDate
为System.DateTime.Now
例程。通常使用null
作为@sehes答案中的特殊值。如果null
对你的代码有另一个特殊的含义,你可以使用一个永远不会被用作默认参数的值,例如System.DateTime.MinValue
:
public void ExampleSub(string Test,
System.Nullable<DateTime> fromDate = DateTime.MinValue)
{
fromDate = fromDate == DateTime.MinValue ? System.DateTime.Now : fromDate;
//A Great sub!
}
不能,编译器会告诉你为什么:)
在c#:public void ExampleSub(string Test)
{
//A Great overload!
ExampleSub(Test, System.DateTime.Now);
}
public void ExampleSub(string Test, System.Nullable<DateTime> fromDate)
{
//A Great sub!
}
现在,如果你知道null
不会被调用者合法地传递进来,你可以这样做:
public void ExampleSub(string Test, System.Nullable<DateTime> fromDate = null)
{
fromDate = fromDate?? System.DateTime.Now;
//An Even Greater sub!
}
VB
Public Sub ExampleSub(Test As String, _
Optional fromDate As System.Nullable(Of DateTime) = Nothing)
'A Great sub!
If fromDate Is Nothing Then
'code here for no fromDate
'i.e. Now
fromDate = DateTime.Now
End If
End Sub
如果有人在VB中这样做。这是我解决我的问题的一种方式,我没有在这条线上找到确切的东西,如果它能帮助别人:
/*I set below line as parameter in method*/
Optional ByVal SlotDate As DateTime = Nothing
If Not SlotDate = Nothing Then
/* code to execute when date passed */
Else
/* code to execute when there is no date passed */
End If