簡體   English   中英

C# default 關鍵字在 F# 中的等價物是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM