C#——我如何使用Null合并运算符来允许使用一个扩展方法;t接受空参数
本文关键字:方法 扩展 一个 参数 Null 何使用 合并 运算符 许使用 | 更新日期: 2023-09-27 18:25:48
我有一个属性,它是LINQ语句中select子句的一部分。这是一个需要转换为UTC的截止日期。
不幸的是,这个特定的属性是一个可以为null的datetime对象,因此我无法使用.ToUniversalTime()
扩展名。
难道不应该允许我使用null合并运算符来处理这个问题吗?我正试图这样做,但编译器对此并不满意:
item.DueDate ?? null ?? item.DueDate.ToUniversalTime().ToString("o")
我是不是错过了一些简单的东西?
item.DueDate == null ? null : item.DueDate.Value.ToUniversalTime().ToString("o")
在Nullable<T>
上使用GetValueOrDefault
方法,比三元或空聚结更干净:
item.DueDate.GetValueOrDefault(yourDefaultHere).ToUniversalTime();
不能使用null合并运算符来处理在可为null的对象上调用方法的这些场景。
请尝试以下操作。
item.DueDate != null ? item.DueDate.ToUniversalTime().ToString("o") : null;