首页 > 解决方案 > 如何在 f# 中匹配 Nullable Date 参数

问题描述

学习 F#,找不到答案...我想处理 Nullable 参数(原始 c# 中的 DateTime?)为 null 的情况,但我收到错误“Nullable 没有 null 作为正确的价值”。这样做的正确方法是什么?

let addIfNotNull(ht:Hashtable, key:string, value:Nullable<DateTime>) = 
        match value with 
        | null -> ()
        | _ -> ht.Add(key,value)
        ht  

标签: f#nullable

解决方案


来自https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/symbol-and-operator-reference/nullable-operators

通过属性可以从System.Nullable<'T>对象中获取实际值,通过调用方法Value可以判断对象是否有值。System.Nullable<'T>HasValue

所以,而不是match你做

if value.HasValue then ht.Add(key, value.Value)

你可以使用

match Option.ofNullable value with ...

或声明一些主动模式来提供帮助。


推荐阅读