如果您在 Hashtable 中仅存储 Doubles,则可以使用 BinaryFormatter 到 serialize and deserialize 您的数据结构。
Hashtable DTVector = new Hashtable();
DTVector.Add("key",12);
DTVector.Add("foo",42.42);
DTVector.Add("bar",42*42);
// write the data to a file
var binformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
using(var fs = File.Create("c:\\temp\\vector.bin"))
{
binformatter.Serialize(fs, DTVector);
}
// read the data from the file
Hashtable vectorDeserialized = null;
using(var fs = File.Open("c:\\temp\\vector.bin", FileMode.Open))
{
vectorDeserialized = (Hashtable) binformatter.Deserialize(fs);
}
// show the result
foreach(DictionaryEntry entry in vectorDeserialized)
{
Console.WriteLine("{0}={1}", entry.Key,entry.Value);
}
请记住,您添加到 Hashtable 的对象需要是可序列化的。 .Net 框架中的值类型是和其他一些类。
如果你会像这样创建自己的类:
public class SomeData
{
public Double Value {get;set;}
}
然后你像这样向 Hashtable 添加一个实例:
DTVector.Add("key",new SomeData {Value=12});
调用 Serialize 时会出现异常:
在未标记为可序列化的程序集“blah”中键入“SomeData”。
您可以按照异常消息中的提示,将属性 Serializable 添加到您的类中
[Serializable]
public class SomeData
{
public Double Value {get;set;}
public override string ToString()
{
return String.Format("Awesome! {0}", Value );
}
}