C#默认关键字的F#中的等效内容是什么?

我正在寻找相当于C#的default关键字,例如:

 public T GetNext() { T temp = default(T); ... 

谢谢

我在博客中发现了这个:“ 这个C#代码在F#中是什么样子的?(第一部分:expression式和语句) ”

C#有一个名为“default”的运算符,它返回给定types的零初始值:

 default(int) 

它的实用性有限; 最常见的是你可以使用默认(T)的通用。 F#有一个和库函数类似的结构:

 Unchecked.defaultof<int> 

从技术上说,F#函数Unchecked.defaultof<'a>等同于C#中的default运算符。 不过,我认为值得注意的是, defaultof在F#中被认为是不安全的事情,只有在真正需要的时候才应该使用(就像使用null ,这在F#中也是不鼓励的)。

在大多数情况下,您可以通过使用option<'a>types来避免使用defaultof 。 它允许您表示一个值不可用的事实。

但是,下面是一个简单的例子来说明这个想法。 以下C#代码:

 T temp = default(T); // Code that may call: temp = foo() if (temp == default(T)) temp = bar(arg) return temp; 

在F#中可能会这样写(使用命令式function):

 let temp = ref None // Code that may call: temp := Some(foo()) match !temp with | None -> bar(arg) | Some(temp) -> temp 

当然,这取决于你的具体情况,在某些情况下, defaultof是唯一可以做的事情。 不过,我只想指出,在F#中, defaultof的使用较less。