是否有.NET函数将字符串解析/转换为可选值?

时间:2018-10-17 14:59:04

标签: .net parsing f# optional

“字符串”将可选值转换为字符串。但是,是否有.NET函数将这样的字符串转换回可选值?

let x = Some 3.0
let y = string x   // y = "Some(3)"
let z = ?<float> x // z = Some 3.0

1 个答案:

答案 0 :(得分:2)

没有内置的。但是您可以编写一个针对许多类型的函数来执行此操作。具有静态成员TryParse : string * byref<T> -> bool的任何类型都可用于以下类型,其中包括所有数字类型boolDateTime以及其他一些数字

let inline tryParse< ^T when ^T : (static member TryParse : string * byref< ^T> -> bool)> (s: string) =
    let mutable res = Unchecked.defaultof< ^T>
    if (^T : (static member TryParse : string * byref< ^T> -> bool)(s, &res)) then
        Some res
    else
        None

tryParse<float> "3.45" // => Some 3.45
tryParse<float> "test" // ==> None