null与cast vs Unchecked.defaultof?

时间:2019-05-12 11:33:11

标签: f#

我遇到了两种在F#中创建正确类型的null值的方法:

// null with cast
let mutable x = null :> MyReferenceType

// Unchecked.defaultof
let mutable x = Unchecked.defaultof<MyReferenceType>

有没有理由偏爱一个?

1 个答案:

答案 0 :(得分:4)

没有区别,有时候做事的方法不止一种。但是通常,Unchecked.defaultof()用于一般上下文中,在这种情况下您不提前知道类型,因此也不知道默认值。您当然知道MyReferenceType的默认值为null。因此,我同意第一个声明。实际上,即便如此,演员表也有点丑陋。大多数人可能只是将其写为

let x : MyReferenceType = null