代码之家  ›  专栏  ›  技术社区  ›  symbiont

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

  •  0
  • symbiont  · 技术社区  · 8 年前

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

    let x = Some 3.0
    let y = string x   // y = "Some(3)"
    let z = ?<float> x // z = Some 3.0
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Tarmil    8 年前

    没有内置的。但是您可以编写一个函数,它可以为许多类型执行此操作。具有静态成员的任何类型 TryParse : string * byref<T> -> bool 适用于以下各项,包括所有数字类型, bool , DateTime 还有一些:

    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