[英]What is the equivalent in F# of the C# default keyword?
我正在尋找等效的 C# default
關鍵字,例如:
public T GetNext()
{
T temp = default(T);
...
謝謝
我在博客中找到了這個:“ 這段 C# 代碼在 F# 中是什么樣子的?(第一部分:表達式和語句) ”
C# 有一個名為“default”的運算符,它返回給定類型的零初始化值:
default(int)
它的實用性有限; 最常見的是,您可以在泛型中使用 default(T)。 F# 具有與庫函數類似的構造:
Unchecked.defaultof<int>
從技術上講,F# 函數Unchecked.defaultof<'a>
等效於 C# 中的default
運算符。 但是,我認為值得注意的是defaultof
在 F# 中被認為是不安全的東西,應該只在真正需要時使用(就像使用null
,在 F# 中也不鼓勵使用)。
在大多數情況下,您可以通過使用option<'a>
類型來避免對defaultof
的需要。 它允許您表示值尚不可用的事實。
然而,這里有一個簡單的例子來演示這個想法。 以下 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# 中的使用頻率較低。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.