代码之家  ›  专栏  ›  技术社区  ›  elmattic

C默认关键字的f中的等效值是多少?

  •  62
  • elmattic  · 技术社区  · 16 年前

    我在找C的等价物# default 关键字,例如:

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

    谢谢

    2 回复  |  直到 12 年前
        1
  •  74
  •   Brian    16 年前

    我在博客中找到了这个: What does this C# code look like in F#? (part one: expressions and statements)

    C有一个名为“默认”的运算符 返回零初始化 给定类型的值:

    default(int) 
    

    它的效用有限;最常用的是 通用中的默认值(T)。F有一个 类似于图书馆的结构 功能:

    Unchecked.defaultof<int>
    
        2
  •  32
  •   Patrick McDonald    12 年前

    从技术上讲,F函数 Unchecked.defaultof<'a> 相当于 default C中的运算符。不过,我认为值得注意的是 defaultof 被认为是 不安全的 F中的内容,只有在确实需要时才应使用(就像使用 null 在F中也不鼓励。

    在大多数情况下,你可以避免 违约 通过使用 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
    

    当然,这取决于你的具体情况,在某些情况下 违约 是你唯一能做的事。不过,我只是想指出 违约 在F中使用频率较低。