Có tồn tại (nếu không có trong thư viện chuẩn, sau đó có thể là gói Nuget) một lớp, thích hợp để sử dụng từ C#, cung cấp từ điển thuần túy chức năng? Nghĩa là, khi thêm hoặc xóa khóa, sẽ trả về một từ điển mới trong khi vẫn giữ nguyên từ gốc?C# hoàn toàn là từ điển chức năng
Trả lời
Bạn đang tìm kiếm bất biến bộ sưu tập, ImmutableDictionary<TKey, TValue>
trong trường hợp của bạn:
https://msdn.microsoft.com/en-us/library/dn467181(v=vs.111).aspx
Khi bạn thao tác một cuốn từ điển bất biến một bản sao của bản gốc điển được thực hiện, các thao tác được áp dụng và mới bất biến từ điển được trả lại.
Trong trường hợp ai đó thắc mắc về sự khác biệt giữa các bộ sưu tập chỉ đọc như [ReadOnlyDictionary'] (https://msdn.microsoft.com/en-us/library/gg712875 (v = vs. 110) .aspx) và các bộ sưu tập bất biến như ['ImmutableDictionary'] (https://msdn.microsoft.com/en-us/library/dn467063 (v = vs.111) .aspx): trước đây không cung cấp các phương thức để sửa đổi bộ sưu tập, nhưng nó chỉ là một trình bao bọc xung quanh bộ sưu tập gốc, có thể sửa đổi, nếu nó được thay đổi thì bộ sưu tập chỉ đọc được sửa đổi. Các bộ sưu tập bất biến không phải là trình bao bọc, chúng không thể thay đổi được. –
... nhưng chúng cung cấp các phương pháp để "sửa đổi" chúng như ['Add'] (https://msdn.microsoft.com/en-us/library/dn466983 (v = vs.111) .aspx) hoạt động tương tự đối với các phương thức 'string', chúng trả về một bộ sưu tập không thay đổi được sửa đổi mới, nhưng tập hợp cũ vẫn không thay đổi. –
Tôi đã tìm thấy ImmutableDictionary từ System.Collections.Immutable. Bạn có thể tìm thêm ở đây https://msdn.microsoft.com/fr-fr/library/dn467181(v=vs.111).aspx
Câu hỏi phải được lặp lại là ".NET có bất kỳ từ điển chỉ đọc hoặc không thay đổi nào" không? Câu trả lời là có cho cả hai.
Chức năng từ điển chỉ đọc được cung cấp bởi lớp ReadOnlyDictionary.
Tính bất biến có nghĩa là một cái gì đó khác - điều đó có nghĩa là chế độ xem của một khách hàng về bộ sưu tập không thay đổi ngay cả khi một người khác đang thực hiện thay đổi cho bộ sưu tập đó. Này được cung cấp bởi lớp ImmutableDictionary
Từ điển chức năng tốt nhất (hoặc 'bản đồ' khi họ đang nổi tiếng trong thế giới hoạt động) có sẵn như là một phần của thư viện này C# chức năng:
https://github.com/louthy/language-ext
đây là mô-đun đồ:
https://github.com/louthy/language-ext/blob/master/LanguageExt.Core/Map.cs
Disclaimer: tôi đã viết nó. Nhưng những lý do cho thư viện là để tạo điều kiện lập trình chức năng trong C#. Trong khi câu trả lời được chấp nhận của ImmutableDictionary là một giao diện kiểu OO hơn (ngay cả khi nó sử dụng ngữ nghĩa bất biến).
- 1. C++ và HOÀN TOÀN chức năng động
- 2. Chức năng C# Store trong từ điển
- 3. Lập trình hoàn toàn chức năng
- 4. Bộ chức năng thông minh hoàn toàn
- 5. Heap mềm hoàn toàn chức năng
- 6. Exit không chỉ từ chức năng trẻ nhưng từ chức năng toàn bộ cha mẹ
- 7. Chức năng C# tĩnh của tôi đang chơi trò chơi với tôi ... hoàn toàn lạ!
- 8. C++ 11 std :: chức năng và chuyển tiếp hoàn hảo
- 9. gọi c chức năng từ C#
- 10. Chức năng ASM từ C ARM nhúng
- 11. Chức năng jquery toàn cầu
- 12. Chức năng toàn cầu CodeIgniter
- 13. C++ chức năng cục bộ tĩnh so với chức năng toàn cầu
- 14. Gọi chức năng vợt từ C
- 15. tại địa phương soạn thảo một cây hoàn toàn chức năng
- 16. C# enums là tham số chức năng?
- 17. C++ là ngôn ngữ hướng đối tượng hoàn toàn?
- 18. Cách gọi chức năng C++ từ java
- 19. C# tắt chức năng từ khóa
- 20. Gọi chức năng Cython C từ Python
- 21. Xử lý ngoại lệ toàn chức năng trong C++ - đó có phải là kiểu xấu không?
- 22. Truy cập chức năng C++ từ QML
- 23. Chức năng so sánh chuỗi an toàn
- 24. các phím từ điển hoàn chỉnh trong tab ipython
- 25. Mẫu mẫu Chức năng C++
- 26. kdiff3 chọn tệp từ xa hoàn toàn
- 27. Là std :: cout hoạt động hoàn toàn trên ngăn xếp?
- 28. Chức năng xuất từ C++ dll sang C# P/Invoke
- 29. Gọi chức năng C Mục tiêu từ Mã C++
- 30. Máy tính Eulers Chức năng hoàn hảo
Eh, 'ImmutableDictionary'? https://msdn.microsoft.com/en-us/library/dn467181(v=vs.111).aspx Khi bạn thao tác một từ điển bất biến, một bản sao của từ điển gốc được tạo, các thao tác được áp dụng và một từ điển bất biến mới được trả về . –
Bạn đang lạm dụng từ 'chức năng'. Bạn đang hỏi về một từ điển chỉ đọc hoặc không thay đổi được. Có những lớp cung cấp cả hai hành vi –