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。