我有一个方法:
public IEnumerable<Something> MethodName(DateTime? checkin, DateTime? checkout, int year){}
通过此方法,我如何检查用户是否输入了签入日期。这就是我所做的,但我得到一个错误:我想我没有使用正确的操作员来检查日期。
if (checkin.HasValue){
List<Name> l =FileName.NameofMethod(checkin)
} else if (checkin.HasValue && checkout.HasValue){
List<Name> l =FileName.NameofMethod2(checkin, checkout, year)
}
如果我返回列表,这种方法会有效吗?目前我收到一个错误说:
Error 8 The best overloaded method match for 'ProjectName.FileName.NameofMethod(System.DateTime, System.DateTime, int)' has some invalid arguments
我也得到错误:
Error 9 Argument 1: cannot convert from 'System.DateTime?' to 'System.DateTime'
这意味着什么。因此,如果选择了一个日期,则在选择了两个日期时触发方法,然后触发另一个执行其他操作的方法
答案 0 :(得分:2)
您应该使用DateTime吗?而不是DateTime类型。 '?'使DateTime可以为空,因此如果没有输入数据,它将包含null。
因此,您的方法签名将如下所示:
public IEnumerable<Something> MethodName(DateTime? checkin, DateTime? checkout, int year){}
然后,您可以将if-condition更改为以下内容:
if (checkin.HasValue)
{
//do something....
}
else if (checkin.HasValue && checkout.HasValue)
{
//do something else...
}
如果您不想更改类型,可以将其与DateTime.MinValue进行比较
if(checkin != DateTime.MinValue)
由于这是DateTime的默认值,因此如果用户不设置任何内容,将为checkin分配此值。