Назначение 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# имя может быть произвольным.

Другие вопросы по тегам