哪种方式更习惯使用 Nullable<'a> 或使用 Option<'a> 来表示可为空的 int?
问问题
181 次
2 回答
5
正如约翰所说,Option<T>
在 F# 中绝对是更惯用的类型。我当然会使用选项作为我的默认选择——该Option
模块提供了许多有用的功能,模式匹配在选项上工作得很好,而且 F# 库通常设计为与选项一起使用。
也就是说,有两种情况您可能想要使用可为空的:
创建可选值数组时 -
Nullable<T>
是一种值类型(某种),如果创建数组Nullable<T>[]
,则将其分配为连续内存块。另一方面,选项是引用类型,option<T>[]
将是堆分配对象的引用数组。当您需要编写一些计算并传播缺失值时 - 在 F# 3.0 中,有一个模块
Microsoft.FSharp.Linq.NullableOperators
可以实现各种运算符来处理可空值(请参阅MSDN 文档),它可以让您编写例如:let one = Nullable(1) let two = Nullable(2) // Add constant to nullable, then compare value of two nullables (one ?+ 2) ?>=? two
于 2013-10-02T03:28:45.980 回答
5
Option 在 F# 代码中更为惯用。
它在使用时具有更好的语法,match
并得到标准库的大量支持。
但是,如果您打算从 C# 或其他语言访问代码,您可能应该公开Nullable
在 C# 中更易于使用的接口。
于 2013-10-02T03:22:55.807 回答