错误无法隐式转换类型';字符串';到';系统日期时间';返回时
本文关键字:系统 日期 时间 返回 字符串 转换 类型 错误 | 更新日期: 2023-09-27 18:10:08
我试图向类中添加适当项,但收到错误:error无法将类型"string"隐式转换为"System"。"日期时间"。
public DateTime BookDate
{
get
{
if (this.PXP.BookDate.HasValue)
{
return this.PXP.BookDate.Value;
}
else return "";
}
}
我不知道该回这里干什么。我必须返回一些东西,否则我会得到错误:不是所有的代码路径都返回一个值。BookDate正在从另一个类调用:
public JobPXP PXP { get; set; }
我知道这个问题很简单。。答案是我只是错过了DataTime之后的CCD_ 1。感谢大家的回答
public DateTime BookDate
{
get
{
if (this.PXP.BookDate.HasValue)
{
return this.PXP.BookDate.Value;
}
else return "";
}
}
从你的代码中,看起来你想在这个时候传递空日期。PXP。预订日期。HasValue为false。
错误为-else返回";陈述您正试图在return语句中传递字符串。这是我的建议(我假设这个.PXP.BookDate是可以为null的DateTime,因为它从你的代码中看起来。(
public DateTime? BookDate
{
get
{
return this.PXP.BookDate;
}
}
我不确定在这里返回什么
如果您不确定要返回什么,则可能希望返回null
。然而,问题是BookDate
属性是DateTime
,它不允许null
s。然而,Nullable<DateTime>
,或者简单地说,DateTime?
确实允许null
s。由于this.PXP.BookDate
是可以为null的,您可以直接返回它,如下所示:
public DateTime? BookDate {
get {
return this.PXP.BookDate;
}
}
另一种解决方案是制作一种方法,如果存在,可以获得可选的?
0,类似于IDictionary<K,V>
:的TryGetValue
方法
public bool TryGetBookDate(out DateTime res) {
res = this.PXP.BookDate ?? default(DateTime);
return this.PXP.BookDate.HasValue;
}
DateTime
不能为空,因此不能返回null
。字符串也是一个无效选项。这里基本上有两个选项:
返回DateTime
的特定值,例如DateTime.MinValue
(即01.01.0001
(,或者使用Nullable<DateTime>
(相当于DateTime?
(。
最后一种方法允许您返回Null
值,而不是实际日期,但会更改方法的签名,这反过来又需要在调用方法时进行处理。
不过,如果你使用DateTime.MinValue
,你仍然需要处理方法之外的特殊情况,所以我想说,这取决于你选择最适合你的情况。
另一种方式:
public DateTime BookDate
{
get
{
DateTime dt = DateTime.MinValue;//you default datetime here
DateTime.TryParse(Convert.ToString(this.PXP.BookDate.Value),out dt)
return dt;
}
}