2012-04-11 15 views
3

Convert.ToDateTime()を上書きできますか?私は文字列がnulであるかどうかを100回以上確認する必要はなく、そうでなければDateTimeに変換します。この関数をオーバーライドしてヌルかどうかをチェックし、ヌルを返すことができます。それ以外の場合は変換してください。Convert.ToDateTime()を上書きできますか?

+0

あなたは 'DateTime.TryParseを使用しないことはできません'? – V4Vendetta

答えて

3

いいえ、静的メソッドを上書きすることはできません。戻り値の型は、それ自体が非NULL可能値型であるDateTime?DateTimeのでなければならないこと

// 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); 
    } 
} 

注:しかし、あなたはあなた自身の静的メソッドを書くことができます。

Convert.ToDateTimeの代わりにDateTime.ParseExactを使用することをおすすめします。私はそれほど寛容ではない、現在の文化特有のふるまいを大変気に入りました。それはデータがどこから来ているかによって異なります。形式を知っていますか?それはユーザーの文化や不変の文化にあるのだろうか? (?基本的には、ユーザが入力したテキスト、またはいくつかの機械生成フォーマットである)

+0

チェックのために '.IsNullOrEmpty'を使う方が良いかもしれません。 – V4Vendetta

+0

@ V4Vendetta:これは、望ましい動作に依存します.OPは、空の文字列をnullと同じ方法と見なすことを望んでいるとは言いませんでした。空の文字列はバグを示す可能性があります。 –

1

文字列の形式が正しいことがわかっている場合は、代わりにDateTime.Parseを使用できます。

2

ToDateTimeをオーバーライドすることはできませんが、あなたはTryParseを使用することができます。

bool valid = DateTime.TryParse("date string", out d); 
関連する問題