6

我正在编写一个要从 C# 使用的 F# 互操作类。我认为 F# 有从 .NET Tuple<> 类型的隐式转换(类似于 IEnumerable 被视为 seq),所以我编写了以下代码:

type MyClass() = 
    member this.MyMethod (t: Tuple<int, int>) =
        let meaningOfLife (t : int * int) = 42
        meaningOfLife t

此代码无法编译并出现以下错误: error FS0001: This expression was expected to have type int * int but here has type Tuple

那么如何在 C# 和 F# 之间转换元组(以及返回)?

4

1 回答 1

8

如果您的目标是 .NET 4.0 及更高版本,则无需指定对象元组。F# 元组会自动编译为元组。您可以使用:

type MyClass() = 
  member this.MyMethod (t: int * int) =
    let meaningOfLife (t : int * int) = 42
    meaningOfLife t

它应该可以在 C# 中正常工作。

于 2013-07-21T19:34:43.337 回答