从F#调用DateTime.TryParse的正确方法是什么?

时间:2012-11-27 17:05:10

标签: .net f# tryparse

从F#调用DateTime.TryParse的正确方法是什么?我试图从F#interactive测试一些代码,我无法弄清楚如何通过ref将可变的DateTime传递给第二个参数。 F#中的输入/输出/参考语法是什么?

这是我正在查看的方法签名: http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx?cs-save-lang=1&cs-lang=fsharp#code-snippet-1

4 个答案:

答案 0 :(得分:65)

如果您确实需要通过引用传递可变DateTime,那么Chris的回答是正确的。但是,在F#中使用编译器将尾随out参数视为tupled返回值的能力更为惯用:

let couldParse, parsedDate = System.DateTime.TryParse("11/27/2012")

此处,第一个值是bool返回值,而第二个值是指定的out参数。

答案 1 :(得分:11)

以下是如何在F#中执行DateTime.TryParse:

let mutable dt2 = System.DateTime.Now
let b2 = System.DateTime.TryParse("12-20-04 12:21:00", &dt2)

&运算符找到dt2的内存地址以修改引用。

这是F#参数syntaxt上的一些additional information

答案 2 :(得分:9)

仅仅为了完整性,另一种选择是使用ref cell,例如

let d = ref System.DateTime.MinValue
if (System.DateTime.TryParse("1/1/1", d)) then
   // ...

答案 3 :(得分:0)

我发现了另一种方法,似乎更具功能性(来自https://stackoverflow.com/a/4950763/1349649

match System.DateTime.TryParse "1-1-2011" with
| true, date -> printfn "Success: %A" date
| false, _ -> printfn "Failed!"

不幸的是,我找不到有关其工作方式的任何信息。