2015-08-28 111 views
0

我试图添加一个类到一个类,但我得到的错误:错误不能隐式地将类型'字符串'转换为'System.DateTime'在其他回报。错误不能隐式地将类型'字符串'转换为'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

让它为空,然后就返回如果。 – Abhitalks

+0

那么如果没有价值,你希望*返回什么?我们不能告诉你该怎么做...... –

+0

尝试在其他情况下返回null – apomene

回答

3
public DateTime BookDate 
    { 
     get 
     { 
      if (this.PXP.BookDate.HasValue) 
      { 
       return this.PXP.BookDate.Value; 
      } 
      else return ""; 
     } 
    } 

从你的代码看起来你希望在this.PXP.BookDate.HasValue为false时传递空的日期。

错误是 - else return“”;声明。您正试图在return语句中传递字符串。 这里是我的建议(我假设this.PXP.BookDate是可空的日期时间,因为它从你的代码看起来。)

public DateTime? BookDate 
    { 
     get 
     {     
      return this.PXP.BookDate;     
     } 
    } 
+0

谢谢,我只是想念?在DataTime之后。返回的值包括数据后的时间。我试着将代码更改为'return this.PXP.BookDate.Value.ToShortDateString();'但它又说我不能将字符串转换为System.DataTime? – user123456789

+0

@ user123456789:当你做一个'ToShortDateString'时,你还期望什么? “ToShortDateString”中的“字符串”这个单词不是响铃吗? – Abhitalks

+0

@Abhitalks是的,我意识到这一点。那么我该如何停止显示时间呢? – user123456789

1

I am not sure what to return here

如果你不知道什么回报,可能要返回null。但是,问题是BookDate财产是DateTime,它不允许null s。但是,Nullable<DateTime>或简单地DateTime?的确允许null s。由于this.PXP.BookDate是空的,您可以直接返回,就像这样:

public DateTime? BookDate { 
    get { 
     return this.PXP.BookDate; 
    } 
} 

另一种解决方案是使如果存在的话,将得到一个可选BookDate的方法,类似于TryGetValue方法IDictionary<K,V>

public bool TryGetBookDate(out DateTime res) { 
    res = this.PXP.BookDate ?? default(DateTime); 
    return this.PXP.BookDate.HasValue; 
} 
0

DateTime不能为空,所以你不能返回null。一个字符串也是一个无效的选项。你已经基本上到这里两个选项:

要么返回的DateTime一个特定的值,如DateTime.MinValue(这是01.01.0001),或使用Nullable<DateTime>代替(相当于DateTime?)。

最后一种方法将让您返回Null值而不是实际的日期,但会更改方法的签名,而这又会调用该方法时需要处理的方法。

如果您使用DateTime.MinValue代替,您仍然需要处理方法之外的特殊情况,所以我认为最好选择最适合您的情况的是您。

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; 

      } 
    } 
相关问题