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



>"string"将可选值转换为字符串。但是,是否有 .NET 函数可以将此类字符串转换回可选值?

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

没有内置的。但是你可以编写一个函数来为相当多的类型执行此操作。具有静态成员的任何类型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

最新更新