2017-04-07 15 views
4

備考:これは自己文書化ですが、他に提案がある場合や、間違いや間違いがあれば、本当に助けていただきたいと思います。C#リストとF#リストの変換

出典:

convert .NET generic List to F# list

What can I do to pass a list from C# to F#?

https://msdn.microsoft.com/en-us/library/4kf43ys3(v=vs.110).aspx?cs-save-lang=1&cs-lang=fsharp#code-snippet-1


、私はF#とC#で初心者です、と私はF#のリストにC#のリストを変換したいですおよびその逆。これを行うためのコード/コマンドは、コードの場所(C#またはF#)によって異なります。

下記の私の答えをご覧ください。他に提案がある場合は、教えてください。ありがとうございました。私は場合

// Currently inside an F# document 
let FS_list = [1;2;3] 
let CS_list = ResizeArray<int> FS_list // System.Collections.Generic.List 
let FS_converted_back = Seq.toList CS_list 

:C#のドキュメント内

+0

私はここで答えをとり、それを答えに入れ、質問自体に答えをつけないのが適切だと思います。 – naslund

+0

注目。私は下に私の答えを移動しました。ありがとうございました。 –

答えて

5

、私はこのようなListModule.OfSeq.ToList()、使用することができます:F#のドキュメント内

// Currently inside a C# document 
var CS_list = new List<int> {1,2,3}; 
var FS_list = ListModule.OfSeq(CS_List); // Microsoft.FSharp.Collections.ListModule 
var CS_converted_back = FS_List.ToList(); 

を、私はこのようなSeq.toListResizeArray<_>、使用することができます何か間違いがあった場合、または明らかに何かを逃した場合は、私に知らせてください。

+1

'Seq.toList'や' List.ofSeq'を使うことができます。なぜなら、 'Seq'モジュールが' List'モジュールとほとんど同じ機能を持っているからです。 –

+1

@DavidRaabのリストは、パターンマッチングではるかに優れていますが、一般的には、他の.net言語で作業するときはSeqに固執します。 – monoceres

+0

@monoceresええ、その真実、私はそれほど重要ではないと思う。 Pattern-Matching on listは、独自の低レベルの再帰関数を記述するのに便利です。パターンマッチングを使用する代わりに 'List.head'と' List.tail'でそれらを書くこともできます。それらはうまく 'Seq.head'と' Seq.tail'に変換されます。しかし、その場合は、とにかく 'seq {}'計算式を使う方が良いと思います。 –

関連する問題