2015-08-28 98 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; 

      } 
    } 
相關問題