为什么F#中的Option类型有Value属性?

时间:2012-09-01 21:27:40

标签: f#

根据Option.Value<'T>的文档:

  

获取某个选项的值。如果是,则引发NullReferenceException   选项为无。

  

此函数供编译的F#代码使用,不应使用   直接

最后一句是否意味着它是由于互操作?如果是这样的用例是什么? 否则它似乎很奇怪,因为Option类型的全部要点是明确定义未定义值的可能性并鼓励处理它们,这很容易被绕过:

let none : int option = None
let value = none.Value

1 个答案:

答案 0 :(得分:3)

我想它就在那里

match v with 
|Some(t) -> t

工作 - 没有Value属性,你将无法获得t任何可用于F#代码的函数(注意,有些DU属性不能从F#访问这是另一种选择)。如果您知道该选项为Some,则可能还会有一些非常小的速度优势,因为如果您直接使用value,则不会检查该选项