在一行中将字符串转换为DateTime可空变量

本文关键字:转换 DateTime 变量 字符串 一行 | 更新日期: 2023-09-27 18:16:29

怎么写

string date = "12/2/2011";
DateTime? dt = date ?? DateTime.Parse(date);

会抛出编译时错误。我知道我可以做tryparse or do if {}。有没有办法在一行中完成?

在一行中将字符串转换为DateTime可空变量

尝试使用条件运算符?:代替空合并运算符??:

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

这个解决方案不仅在字符串datenull或空字符串时将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);