我有一个返回日期时间的C#方法?
我想做的等同于:
DateTime? D;
if (D == null)
{
...
}
else
{
Date = (DateTime)D;
...
}
但在F#
中这怎么办?
我尝试过:
match (d: Nullable<DateTime>) with
| None -> printfn "null"
| NonNull s -> printfn "d %s" s.ToString
但是它不起作用; “无”无法编译
答案 0 :(得分:7)
首先通过Option
将您的值转换为Option.ofNullable
,然后将其结果匹配:
let nd = csharpMethod()
match Option.ofNullable nd with
| Some d -> printfn "Date = %A" d
| None -> printfn "Null date"
答案 1 :(得分:5)
费奥多(Fyodor)将Nullable
转换为Option
的方法比较安全,因为您随后必须使用模式匹配来访问值,但应注意,您也可以使用{{1} }直接:
Nullable
在紧密循环中这样做可能会更好,在这种情况下,您希望避免额外分配。