错误无法隐式转换类型' string'到' System.DateTime'回来

时间:2015-08-28 10:10:41

标签: c# asp.net datetime implicit-conversion

我试图在课堂上添加一个礼节,但我收到错误:错误无法隐式转换类型' 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之后错过了?。谢谢大家的答案

4 个答案:

答案 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.MinValue01.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;  

            }
    }