.net - F# Option.None 元组计算为空值元组

标签 .net f#

有人可以告诉我为什么这个 F# 表达式:

(Option<int*int>.None, Option<int*int>.None)

评估为

val it : (int * int) option * (int * int) option = (null, null)

同时

(Option<int*int>.None

简单地评估为

val it : (int * int) option = None

最佳答案

其中哪一部分令人惊讶,它是 (null, null) 而不是 (None, None)

这只是打印 None 值如何工作的产物。尝试fst it,您会发现它仍然是一个正确的选项值。

您会看到这一点,因为出于性能原因,None 值被编译为 null,即使在 F# 中使用它们时(大部分)这是透明的。通过使用 UseNullAsTrueValue 标记类型,您可以在类型中获得相同的行为。编译标志。

关于.net - F# Option.None 元组计算为空值元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28527979/

相关文章:

f# - 计算表达式是面向方面编程的替代方法吗?

c# - 为什么使用 .NET P/Invoke 调用 libsass 函数会失败?

c# - 无法在 Xamarin Studio 上使用 C# 编写代码

f# - 如何在定义的 F# 函数中交换应用程序的顺序?

.net - 我应该一般学习F#或函数式编程语言吗?

f# - (Kestrel) K 组合器 : why is it useful?

c# - 必须使用适当的属性或方法来修改 'Accept' header 。参数名称: name

asp.net - .NET Web 服务客户端是否可以支持同一 Web 服务的多个不同版本?

c# - 在静态类中存储全局不可变数据

c# - 命名空间错误 OfficeOpenXML EPPlus