我试图在课堂上添加一个礼节,但我收到错误:错误无法隐式转换类型' string'到' System.DateTime'在别的回归。
public DateTime BookDate
{
get
{
if (this.PXP.BookDate.HasValue)
{
return this.PXP.BookDate.Value;
}
else return "";
}
}
我不知道该返回什么地方。我必须返回一些东西,否则我得到错误:并非所有代码路径都返回一个值。正在从另一个类调用BookDate:
public JobPXP PXP { get; set; }
我知道这个问题非常简单..答案是我在DataTime之后错过了?
。谢谢大家的答案
答案 0 :(得分:3)
public DateTime BookDate
{
get
{
if (this.PXP.BookDate.HasValue)
{
return this.PXP.BookDate.Value;
}
else return "";
}
}
当你的代码看起来好像你希望在this.PXP.BookDate.HasValue为false时传递空日期。
错误是 - 否则返回“”;声明。您正在尝试在return语句中传递字符串。 这是我的建议(我假设这个.PXP.BookDate是可以为空的DateTime,因为它从你的代码看起来。)
public DateTime? BookDate
{
get
{
return this.PXP.BookDate;
}
}
答案 1 :(得分:1)
我不知道该返回什么
如果您不确定要返回什么,可能您想要返回null
。但问题是BookDate
属性为DateTime
,不允许null
。但是,Nullable<DateTime>
或DateTime?
确实允许null
。由于this.PXP.BookDate
可以为空,因此您可以直接将其返回,如下所示:
public DateTime? BookDate {
get {
return this.PXP.BookDate;
}
}
另一个解决方案是创建一个方法,如果它存在,将获得可选的BookDate
,类似于TryGetValue
的{{1}}方法:
IDictionary<K,V>
答案 2 :(得分:0)
DateTime
不能为空,因此您无法返回null
。字符串也是无效选项。你基本上有两个选择:
返回特定值DateTime
,例如DateTime.MinValue
(01.01.0001
),或改为使用Nullable<DateTime>
(相当于DateTime?
) 。
最后一种方法将允许您返回Null
值而不是实际日期,但会更改方法的签名,而这又需要在调用方法时进行处理。
如果你使用DateTime.MinValue
,你仍然需要处理方法之外的特殊情况,所以我会说你可以选择最适合你情况的方法。
答案 3 :(得分:0)
另一种方式:
public DateTime BookDate
{
get
{
DateTime dt = DateTime.MinValue;//you default datetime here
DateTime.TryParse(Convert.ToString(this.PXP.BookDate.Value),out dt)
return dt;
}
}