2014-07-03 158 views
-3

我正在尋找在C#中創建一個字典並將其用於查找值的查找。 問題是,我希望這本字典能夠堅持超越代碼,也就是說,即使程序關閉時,我也希望字典不會消失。 在傳統的編程中,這是不可能的,所以你有什麼現成的想法嗎?C#中的詞典#

事實上,字典將持有10,000個密鑰,如果我必須每次重新創建它,則需要很多時間,因爲該設備具有接近200 mb的RAM。

那麼你有什麼想法嗎?

+0

應用程序啓動時的持久存儲+緩存策略? – ken2k

+1

http://stackoverflow.com/questions/100235/looking-for-a-simple-standalone-persistent-dictionary-implementation-in-c-sharp – Jonny

+1

序列化它肯定?文件IO不是傳統的編程!或者databse,或者azure blob或其他,很多方法。 –

回答

1

可以使用PersistentDictionary

它在.NET類似於字典的數據結構實現。

  1. 寫入對象文件系統來保護存儲
  2. 保持鍵/內存
  3. 位置通過傳遞關鍵在不到五毫秒

更多細節及代碼here

檢索任何對象
+1

源代碼:http://persistentdictionary.codeplex.com/SourceControl/latest#TestPersistentMap/CPersistentDictionary/CPersistentDictionary.cs – modiX

0

這裏有一種方法可以做到,只需將WriteObject中的流設置爲文件即可。你可以在這裏看到例子http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx;此外,這是開箱即用,因爲我懷疑你可以得到。 :

using System; 
using System.Collections.Generic; 
using System.Runtime.Serialization; 

namespace ConsoleApplication10 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Dictionary<String, Person> Dict = new Dictionary<string, Person>(); 
      Dict.Add("p1", new Person() { Name = "Chicken Monkey", Age = 9000 }); 
      DataContractSerializer seralizer = new DataContractSerializer(Dict.GetType()); 
      seralizer.WriteObject(Console.OpenStandardOutput(),Dict); 
      Console.ReadLine(); 
     } 
    } 
    [DataContract] 
    class Person 
    { 
     [DataMember] 
     public string Name { get; set; } 
     [DataMember] 
     public int Age { get; set; } 
    } 
}