F#赋值给重载的C#属性

时间:2012-08-23 16:38:04

标签: c# arrays f# c#-to-f#

我正在尝试在F#中使用第三方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

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

2 个答案:

答案 0 :(得分:4)

正确的F#语法是:

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

来自MSDN上的Arrays页:

You can access array elements by using a dot operator (.) and brackets ([ and ]).

答案 1 :(得分:1)

您要分配给indexed property。有两种方法可以引用索引属性:

x.[0, 0] //array syntax

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

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