Назначение F# перегруженному свойству C#
Я пытаюсь использовать стороннюю библиотеку C# в F#. Автор 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 ответа
Правильный синтаксис F#:
cls1.prop1.[0].[0, 0] <- 0.0
Со страницы массивов в MSDN:
You can access array elements by using a dot operator (.) and brackets ([ and ]).
Вы присваиваете индексированное свойство. Существует два способа ссылки на индексированное свойство:
x.[0, 0] //array syntax
а также
x.Item(0, 0) //method syntax
Первый работает, только если свойство названо Item
, что имеет место для любого индексированного свойства, определенного в C#. Однако в F# имя может быть произвольным.