在一行中将字符串转换为DateTime可空变量
本文关键字:转换 DateTime 变量 字符串 一行 | 更新日期: 2023-09-27 18:16:29
怎么写
string date = "12/2/2011";
DateTime? dt = date ?? DateTime.Parse(date);
会抛出编译时错误。我知道我可以做tryparse or do if {}
。有没有办法在一行中完成?
尝试使用条件运算符?:
代替空合并运算符??
:
DateTime? dt = date == null ? (DateTime?)null : DateTime.Parse(date);
您还需要将null强制转换为DateTime?
,否则您将获得编译错误。
string date = "12/2/2011";
DateTime? dt = String.IsNullOrEmpty(date) ? (DateTime?)null : DateTime.Parse(date);
这个解决方案不仅在字符串date
为null
或空字符串时将null
分配给可空的DateTime dt
,而且当它包含无效的日期表示时:
string date = null; // or "01/02/2011"
DateTime? dt;
DateTime temp;
if (DateTime.TryParse(date, out temp)) {
dt = temp;
} else {
dt = null;
}
if-else语句可以用一行三元表达式代替,但不能用temp
的声明:
DateTime temp;
dt = DateTime.TryParse(date, out temp) ? temp : (DateTime?)null;
string date = "12/2/2011";
date = Convert.ToDateTime(date);