1

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

誰かが今後の道筋についてヒントを提供できますか? ありがとう。

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

インデックス付きプロパティに割り当てています。インデックス付きプロパティを参照するには、次の 2 つの方法があります。

x.[0, 0] //array syntax

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

前者は、プロパティの名前Itemが である場合にのみ機能します。これは、C# で定義されたインデックス付きプロパティの場合です。ただし、F# では、名前を任意にすることができます。

于 2012-08-24T17:32:15.563 に答える