簡體   English   中英

F#映射到C#字典

[英]F# map to C# Dictionary

我正在嘗試將F#地圖轉換為C#字典,到目前為止我正在使用:

    let toDictionary (map : Map<_, _>) : Dictionary<_, _> =
        let dict = new Dictionary<_, _>()
        map |> Map.iter (fun k v -> dict.Add(k, v))
        dict

它只是感覺有點笨重,我對F#很新,所以有更好的方法嗎?

1.如果您想要標准的Dictionary實現: 請參閱jbtule的答案

2.如果你想要一個不可變的快速IDictionary:來自當前F#核心庫的dict函數允許從任何鍵值元組序列創建一個只讀字典:

myDict |> Map.toSeq |> dict

返回值的類型為IDictionary ,因此可以從C#中使用。 感謝Daniel的回答讓我想起了Map.toSeq。

3.如果您可以直接使用Map :Map <,>實現IDictionary,這應該可以方便地從C#中使用。 但是,映射的訪問是O(log n),而基於散列的字典訪問是常量順序。

AC# Dictionary將在其構造函數中使用IDictionary Map是一個IDictionary所以:

let toDictionary (map : Map<_, _>) : Dictionary<_, _> = Dictionary(map)
let toDictionary = Map.toSeq >> dict

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM