2012-04-11 149 views
3

我可以覆蓋Convert.ToDateTime()嗎?我不想100次或更多檢查字符串是否爲nul,如果不是,則將其轉換爲DateTime。我可以重寫這個函數來檢查是否爲null,然後將返回null otherway轉換它。我可以重寫Convert.ToDateTime()嗎?

+0

你能不能不要使用'DateTime.TryParse '? – V4Vendetta 2012-04-11 06:12:16

回答

3

不,你不能覆蓋靜態方法。但是,你可以寫你自己的靜態方法:

// TODO: Think of a better class name - this one sucks :) 
public static class MoreConvert 
{ 
    public static DateTime? ToDateTimeOrNull(string text) 
    { 
     return text == null ? (DateTime?) null : Convert.ToDateTime(text); 
    } 
} 

注意,返回類型必須是DateTime?因爲DateTime本身是一個非空的值類型。

您可能還想考慮使用DateTime.ParseExact而不是Convert.ToDateTime - 我從來沒有非常喜歡它的寬鬆,當前文化特定的行爲。這取決於數據來自哪裏。你知道格式嗎?它會在用戶的文化中,還是在不變的文化中? (基本上,它是用戶輸入的文本,或者一些機器生成的格式?)

+0

最好使用'.IsNullOrEmpty'作爲檢查。 – V4Vendetta 2012-04-11 06:14:54

+0

@ V4Vendetta:它取決於期望的行爲--OP沒有說任何關於想要空字符串被認爲與空相同的方法。空字符串完全有可能表示一個錯誤。 – 2012-04-11 06:16:15

1

如果您確定字符串的格式正確,則可以使用DateTime.Parse

2

ToDateTime不能被覆寫,但你可以使用TryParse

bool valid = DateTime.TryParse("date string", out d);