Jam*_*mes 14 .net c# null nullable tryparse
我想尝试将a解析string为a DateTime?,如果失败则将值设置为null.我能想到的唯一方法就是如下,但它看起来并不是很整洁.
DateTime temp;
DateTime? whatIActuallyWant = null;
if (DateTime.TryParse(txtDate.Text, out temp)) whatIActuallyWant = temp;
Run Code Online (Sandbox Code Playgroud)
这是唯一的方法吗?
Bro*_*ass 27
这个怎么样:
DateTime? whatIActuallyWant = DateTime.TryParse(txtDate.Text, out temp) ? (DateTime?)temp : null;
Run Code Online (Sandbox Code Playgroud)
你得到一个单行(不幸的是需要DateTime?演员否则不会编译) - 但我个人可能会坚持null初始化和后续if- 它只是更容易阅读.
Phi*_*ght 16
如果您要多次执行此操作,我建议添加一个简单的扩展方法以方便使用...
public static class Extensions
{
public static DateTime? ToDateTime(this string val)
{
DateTime temp;
if (DateTime.TryParse(val, out temp))
return temp;
else
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以很容易地使用它......
DateTime? ret1 = "01/01/2011".ToDateTime();
DateTime? ret2 = myString.ToDateTime();
Run Code Online (Sandbox Code Playgroud)