在反序列化时查找.net哈希表的大小
如果我从流中读取并获取哈希表。他们是了解散列表有多大的好方法。即,如果我在二进制编辑器中查看文件,那么有多少字节代表这个哈希表? Deserialize mehthod如何知道哈希中的内容?
IFormatter formatter = new BinaryFormatter();
table = (Hashtable)formatter.Deserialize(FileStream);
编辑: 我想弄清楚的是,如果我在二进制编辑器中查看文件,那么文件流中的那些数据是我的哈希表。或者我可以做一些像sizeof()来查找大小(我怀疑我不能)。
答案 0 :(得分:0)
也许这段代码可能会有所帮助?无耻地借鉴Victor Garcia Aprea。文章建议size变量将保存字节数。当然,这是序列化为一个字符串,而不是你正在寻找的二进制文件。
Hashtable ht = new Hashtable();
for (int i = 0; i < 100; i++)
{
ht.Add(i, (i*10000).ToString());
}
LosFormatter los = new LosFormatter(); //in System.Web namespace; used for ViewState
StringWriter sw = new StringWriter();
los.Serialize(sw, ht);
string resultSt = sw.GetStringBuilder().ToString();
int size = sw.GetStringBuilder().ToString().Length;
Console.WriteLine(size);