[英]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.