什么是在C#中默认关键字的F#的相同呢?
题
我想找C#default
关键字,e.g相当于:
public T GetNext()
{
T temp = default(T);
...
由于
解决方案
我发现这个在博客中:“这是什么C#代码的样子像F#(第一部分:表达式和语句)?“
C#有所谓的“默认”的操作员 返回零初始化 给定类型的值:
default(int)
它具有有限的效用;最常见的你可以使用 默认(T)在一个通用的。 F#有 类似的结构作为一个库 功能:
Unchecked.defaultof<int>
其他提示
从技术上讲F#函数Unchecked.defaultof<'a>
是等效于C#中的default
运算符。但是,我认为这是值得一提的是defaultof
被认为是F#的不安全的东西,应当使用只有当它是真的有必要(就像使用null
,也鼓励在F#)。
在大多数的情况下,可以通过使用defaultof
类型避免option<'a>
的需要。它可以让你代表一个事实,即价值还不可用。
然而,在这里是一个简单的例子来演示的想法。下面的C#代码:
T temp = default(T);
// Code that may call: temp = foo()
if (temp == default(T)) temp = bar(arg)
return temp;
将是可能写成这样在F#(使用势在必行功能):
let temp = ref None
// Code that may call: temp := Some(foo())
match !temp with
| None -> bar(arg)
| Some(temp) -> temp
当然,这要看您的具体方案,并在某些情况下defaultof
是你唯一可以做的事情。不过,我只是想指出,defaultof
在F#中使用频率较低。
不隶属于 StackOverflow