我有两个 DateTime 对象,BirthDate 和 HireDate。它们被正确格式化为字符串,当我将它们传递到数据访问层时,需要将它们解析为 DateTime 对象。
DateTime hD = DateTime.Parse(hire);
DateTime bD = DateTime.Parse(birth);
//incase of a datestring being passed through
dateStringPassed = "7/2/1969";
但有时,弦hire
and birth
为空或为空""
,如果代码像这样运行,我会从解析空字符串中收到 FormatException 错误。如何管理空解析并允许 DateTime(如果为空或为 null)被接受为DBNull.Value
?
我仍然无法管理,如果用户不传递 DateTime 字符串,则解析会使我的代码崩溃。
我的出生日期参数如下,检查变量是否为 null,然后使用 DBNull.Value。
The Parse
方法无法处理空字符串,但您可以使用可为空的 DateTime 并执行如下操作:
DateTime? hD = String.IsNullOrEmpty(hire) ? (DateTime?)null : DateTime.Parse(hire)
但更安全的是使用TryParse
反而:
DateTime? hD = null;
DateTime.TryParse(hire, out hD);
然后为了存储这个值,您可以测试hD.HasValue
:
if(hD.HasValue) { /* use hD */ }
else { /* else use DBNull.Value */ }
从 C# 7 开始,您可以对内联输出参数使用更短的语法,并且可以完全避免可空类型:
if (DateTime.TryParse(hire, out var hD)) { /* use hD */ }
else { /* use DBNull.Value */ }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)