是否存在(如果不在標準庫中,那麼可能作爲Nuget包)一個類,適合從C#使用,提供純粹的函數式字典?也就是說,在添加或刪除密鑰的位置,將返回一個新的字典,同時保留原來的字典不變?C#純功能字典
C#純功能字典
回答
您正在尋找不變集合,ImmutableDictionary<TKey, TValue>
:
https://msdn.microsoft.com/en-us/library/dn467181(v=vs.111).aspx
當你操縱一個不變的詞典原 字典的副本被應用,並且新的不可變的 字典被返回。
如果有人想知道只讀集合之間的區別,如[ReadOnlyDictionary](https://msdn.microsoft.com/en-us/library/gg712875(v = vs。 110).aspx)和像['ImmutableDictionary'](https://msdn.microsoft.com/en-us/library/dn467063(v = vs.111).aspx)這樣的不可變集合:前者不提供修改集合的方法,但它只是原始可修改集合的一個包裝,如果該集合發生更改,那麼只讀集合也會被修改。不可變集合不是包裝,它們不能被改變。 –
...但他們提供的方法來修改它們,像['Add'](https://msdn.microsoft.com/en-us/library/dn466983(v = vs.111).aspx)到'string'方法,它們會返回一個新的已修改的不可變集合,但舊集合保持不變。 –
我從System.Collections.Immutable找到ImmutableDictionary。你可以在你的情況找到更這裏https://msdn.microsoft.com/fr-fr/library/dn467181(v=vs.111).aspx
這個問題應該改爲「.NET是否有任何只讀或不可變的字典」?兩者的答案都是肯定的。
只讀字典功能由ReadOnlyDictionary類提供。
不變性意味着別的 - 這意味着即使另一個客戶對集合進行更改,一個客戶對集合的看法也不會改變。這是由ImmutableDictionary類提供
最好的功能詞典(或「地圖」,因爲他們是在功能名揚四海)可作爲本C#功能庫的一部分:
https://github.com/louthy/language-ext
這裏是地圖模塊:
https://github.com/louthy/language-ext/blob/master/LanguageExt.Core/Map.cs
聲明:我寫的。但該庫的原因是爲了在C#中實現函數式編程。而ImmutableDictionary接受的答案是一個更OO風格的接口(即使它使用不可變的語義)。
- 1. C#通用字典功能
- 2. C#字典性能
- 3. Python加入字典功能?
- 4. 腳本字典功能
- 5. 字典功能衰竭WPF
- 6. 關於python字典功能
- 7. 更新功能字典
- 8. 蟒蛇字典功能
- 9. 純功能軟堆
- 10. 不能訪問字典的功能
- 11. Angularjs從純JS功能
- 12. 純功能編程到GPU
- 13. 從字典功能轉換,列出
- 14. 無法調用字典功能。 keyError 0
- 15. 功能和字典格式瞭解
- 16. 保存功能數據幀值字典
- 17. 修改字典的.update功能
- 18. 無法使用功能從字典
- 19. 字典功能的一些問題
- 20. 功能使用字典作爲參數
- 21. 合併多功能使用值字典
- 22. 搜索字典功能想出什麼
- 23. python字典和功能不工作
- 24. 傳遞一個字典的功能viml
- 25. 化功能的使用字典和Zip()
- 26. 的Python - 功能來增加字典值
- 27. 如何使用字典功能?
- 28. 動作字典包含功能
- 29. python字典功能,文本文件
- 30. 功能NHibernate字典映射問題
Eh,'ImmutableDictionary'? https://msdn.microsoft.com/zh-cn/library/dn467181(v=vs.111).aspx當您操作不可變的字典時,將創建原始字典的副本,應用操作並返回新的不可變字典。 –
您正在濫用「功能」一詞。您正在詢問一個只讀或不可變的字典。有些類提供了兩種行爲 –