Нахождение размера .net hashtable - PullRequest
0 голосов
/ 29 июля 2009

Нахождение размера хеш-таблицы .net при десериализации

Если я читаю из потока и получаю хеш-таблицу. Это хороший способ узнать, насколько большой будет хеш-таблица. Т.е. если я посмотрю файл в бинарном редакторе, сколько байтов представляет эту хеш-таблицу? Как десериализовать метод знает, что входит в хеш?

IFormatter formatter = new BinaryFormatter();
table = (Hashtable)formatter.Deserialize(FileStream);

Edit: То, что я пытаюсь выяснить, так это то, если бы я посмотрел на файл в двоичном редакторе, какая часть этих данных в файловом потоке является моей хеш-таблицей. Или я могу сделать что-то вроде sizeof (), чтобы узнать размер (я подозреваю, что не могу).

1 Ответ

0 голосов
/ 29 июля 2009

Возможно, этот фрагмент кода может помочь? Бесстыдно позаимствовано у Victor Garcia Aprea . В статье предполагается, что переменная размера будет содержать количество байтов. Конечно, это сериализуется в строку, а не в двоичную, как вы ищете.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...