我有一些可为空的值,希望在访问它们的值时避免异常。下面展示了我想要实现的一个示例。我目前有
DateTime? dt = null;
if(dt != null)
{
Console.WriteLine(dt?.ToString("yyyyMMddHHmmss"));
}
但我看到可为空的值有一个value
属性。等价物将是
DateTime? dt = null;
if(dt.HasValue)
{
Console.WriteLine(dt.Value.ToString("yyyyMMddHHmmss"));
}
有什么方法可以把代码简化成这样吗?
DateTime? dt = null;
Console.WriteLine(dt.Value?.ToString("yyyyMMddHHmmss"));
以便它只在dt
不为空时运行.ToString(“YYYYMMDDHMMSS”)
?
您可以删除value
属性,只需在nullable本身上调用它:
DateTime? dt = null;
Console.WriteLine(dt?.ToString("yyyyMMddHHmmss"));
使用模式匹配(从C#7.0开始),您可以编写
DateTime? dt = null;
if (dt is DateTime d) {
Console.WriteLine(d.ToString("yyyyMMddHHmmss"));
}
此类型模式起作用,因为null
没有类型,null is t
总是返回false
。如果该值不为null,则将其转换为t
,并赋给t
类型的新变量d
。
您还可以使用字符串插值,特别是如果有不止一个日期,
Console.WriteLine($"Date: {d:yyyyMMddHHmmss}");