2014-07-03 156 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; } 
    } 
}