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

我是不是错过了一些简单的东西?

C#——我如何使用Null合并运算符来允许使用一个扩展方法;t接受空参数

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;