我正在尝试在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
有人可以提供关于前进道路的提示吗?感谢。
答案 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#中,名称可以是任意的。