【问题标题】:F#: How do I declare and use ByRef semantics on parameters?F#:如何在参数上声明和使用 ByRef 语义?
【发布时间】:2010-10-31 02:05:32
【问题描述】:

我正在用输入/输出参数包装一些 SQL 存储过程。这当然意味着我必须做一些丑陋的事情,比如通过引用声明我的参数并使用可变变量。

我将如何在 F# 中执行此操作?

【问题讨论】:

    标签: ado.net f# pass-by-reference


    【解决方案1】:

    F# 确实有一个byref parameter。以下是 MSDN 页面中的示例:

    type Incrementor(z) =
        member this.Increment(i : int byref) =
           i <- i + z
    

    可变变量也存在(尽管使用refmutable 变量之间存在重要区别,两者都可以用于许多相同的目的)。关于这个主题的MSDN page 提供了非常丰富的信息 - 包括关于何时使用哪个关键字/结构的讨论。

    引用变量示例:

    // Declare a reference.
    let refVar = ref 6
    
    // Change the value referred to by the reference.
    refVar := 50
    

    可变变量示例:

    // Declare a reference.
    let mutable refVar = 6
    
    // Change the value referred to by the reference.
    refVar <- 50
    

    如您所见,两种结构的赋值(以及检索)语法也不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-15
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 2010-12-12
      相关资源
      最近更新 更多