.net 选项的F#元组。无作为空值的元组进行计算
有人能告诉我为什么这个F#表达式:.net 选项的F#元组。无作为空值的元组进行计算,.net,f#,.net,F#,有人能告诉我为什么这个F#表达式: (Option<int*int>.None, Option<int*int>.None) 当 (Option<int*int>.None 它是(null,null)而不是(None,None),这一事实的哪一部分令人惊讶 这只是打印None值工作方式的产物。尝试fst it,您将看到它仍然是一个合适的选项值 您之所以会看到这一点,是因为出于性能原因,None值被编译为空值,即使在F#中使用它们(大部分)是透明的。通过使用
(Option<int*int>.None, Option<int*int>.None)
当
(Option<int*int>.None
它是
(null,null)
而不是(None,None)
,这一事实的哪一部分令人惊讶
这只是打印None
值工作方式的产物。尝试fst it
,您将看到它仍然是一个合适的选项值
您之所以会看到这一点,是因为出于性能原因,None
值被编译为空值,即使在F#中使用它们(大部分)是透明的。通过使用编译标志标记类型,可以在类型中获得相同的行为
(Option<int*int>.None
val it : (int * int) option = None