这种事情总是出现,
这有效但很难看:
DateTime? firstDay = null;
if (Day.HasValue) firstDay = Day.Value.AddDays(-14);
Run Code Online (Sandbox Code Playgroud)
这不起作用:
约会时间?firstDay = Day.HasValue?Day.Value.AddDays(-14):null;
除非:
DateTime? firstDay = Day.HasValue ? Day.Value.AddDays(-14) : (DateTime?)null;
Run Code Online (Sandbox Code Playgroud)
也许应该有另一个运营商!
DateTime? firstDay = Day ??? Day.Value.AddDays(-14);
Run Code Online (Sandbox Code Playgroud)
您可以添加扩展方法 Nullable<T>
public static Nullable<T> TransformIfNotNull<T>(this Nullable<T> value,
Func<T, T> transformer)
where T : struct
{
return value == null ? value : transformer(value.Value);
}
Run Code Online (Sandbox Code Playgroud)
然后:
DateTime? firstDay = Day.TransformIfNotNull(x => x.AddDays(-14));
Run Code Online (Sandbox Code Playgroud)
请注意,虽然使用null文字的版本在没有强制转换的情况下不起作用,但您可以使用:
DateTime? firstDay = Day.HasValue ? Day.Value.AddDays(-14) : Day;
Run Code Online (Sandbox Code Playgroud)
...当然,假设你知道Day不会改变通话之间的类型.
| 归档时间: |
|
| 查看次数: |
474 次 |
| 最近记录: |