错误无法隐式转换类型';字符串';到';系统日期时间';返回时

本文关键字:系统 日期 时间 返回 字符串 转换 类型 错误 | 更新日期: 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;  
            }
    }