我该怎么写
string date = "12/2/2011";
DateTime? dt = date ?? DateTime.Parse(date);
这会抛出编译时错误。我知道我可以做tryparse or do if {}
。有没有办法在一行中做到这一点?
答案 0 :(得分:25)
尝试使用conditional operator ?:
代替null-coalescing operator ??
:
DateTime? dt = date == null ? (DateTime?)null : DateTime.Parse(date);
您还需要将null转换为DateTime?
否则会出现编译错误。
答案 1 :(得分:3)
string date = "12/2/2011";
DateTime? dt = String.IsNullOrEmpty(date) ? (DateTime?)null : DateTime.Parse(date);
答案 2 :(得分:2)
当字符串null
为dt
或空字符串时,此解决方案不仅会将date
分配给可空的DateTime null
,而且当它包含无效的日期表示时:
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;
答案 3 :(得分:1)
string date = "12/2/2011";
date = Convert.ToDateTime(date);