1

我正在尝试在 F# 中使用第 3 方 C# 库。C# 作者重载了我试图设置的字段,以便对象本身接收值。对于速记和不完整的代码片段,C# 看起来像这样:

public class cls1 { public List<cls2> prop1; }
public class cls2 { private double[,] prop2;
                    public object this[int r,int c] 
                      {set {this.prop2[r,c]=value;} }
                  }

要设置cls2.prop2,这在 C# 中有效:

cls1.prop1[0][0, 0] = 0.0

在 F# 中,这失败并出现错误"Invalid expression on left of assignment"

cls1.prop1[0][0, 0] <- 0.0

有人可以提供关于前进道路的提示吗?谢谢。

4

2 回答 2

4

正确的 F# 语法是:

   cls1.prop1.[0].[0, 0] <- 0.0

从MSDN 上的数组页面:

You can access array elements by using a dot operator (.) and brackets ([ and ]).
于 2012-08-23T19:18:51.887 回答
1

您正在分配给索引属性。有两种方法可以引用索引属性:

x.[0, 0] //array syntax

x.Item(0, 0) //method syntax

前者仅在属性名为时才有效Item,C# 中定义的任何索引属性都是这种情况。但是,在 F# 中,名称可以是任意的。

于 2012-08-24T17:32:15.563 回答