string
をとして解析したいと思います。DateTime?
失敗した場合は、値をに設定しますnull
。私がこれを行うために考えることができる唯一の方法は次のとおりですが、それはあまりきれいではないようです。
DateTime temp;
DateTime? whatIActuallyWant = null;
if (DateTime.TryParse(txtDate.Text, out temp)) whatIActuallyWant = temp;
これが唯一の方法ですか?
これはどう:
DateTime? whatIActuallyWant = DateTime.TryParse(txtDate.Text, out temp) ? (DateTime?)temp : null;
これでワンライナーが得られます (残念ながらキャストが必要です。そうしないとDateTime?
コンパイルされません) 。null
if
この操作を複数回実行する場合は、使いやすさのために単純な拡張メソッドを追加することをお勧めします...
public static class Extensions
{
public static DateTime? ToDateTime(this string val)
{
DateTime temp;
if (DateTime.TryParse(val, out temp))
return temp;
else
return null;
}
}
その後、非常に簡単に使用できます...
DateTime? ret1 = "01/01/2011".ToDateTime();
DateTime? ret2 = myString.ToDateTime();