C # проблема хэш-таблицы - PullRequest
0 голосов
/ 18 апреля 2011

Я не знаю, в чем проблема с этим кодом ... он говорит, что строку нельзя преобразовать в объект ... что-то в этом роде.

//lvLogs <-- ListView (2 colums)    

Hashtable serverLogs = new Hashtable();

        serverLogs.Add("a", "aw");
        serverLogs.Add("b", "ew");
        serverLogs.Add("c", "iw");

        foreach (DictionaryEntry h in serverLogs)
        {
            lvLogs.Items.Add(h.Key).SubItems.Add(h.Value);                
        }       

, но этот код работает нормально ..

Hashtable serverLogs = new Hashtable();

        serverLogs.Add("a", "aw");
        serverLogs.Add("b", "ew");
        serverLogs.Add("c", "iw");

        foreach (DictionaryEntry h in serverLogs)
        {
            //lvLogs.Items.Add(h.Key).SubItems.Add(h.Value);
            //lvi.SubItems.Add(h.Value);
            lvLogs.Items.Add(h.Key + "   -   " + h.Value);
        }       

как я могу отделить ключ и значение от столбцов в lvLogs?

Ответы [ 2 ]

8 голосов
/ 18 апреля 2011

Hashtable не является строго типизированной коллекцией.DictionaryEntry.Key возвращает object, и вы пытаетесь использовать его как string без приведения, что недопустимо.

Причина, по которой работает конкатенация строк, заключается в том, что делает принять object в качестве аргумента (он вызывает ToString() для него).

Попробуйте вместо этого использовать Dictionary<string, string>.

4 голосов
/ 18 апреля 2011

Первый заказ бизнеса, сбросьте Hashtable. Классы в пространстве имен System.Collections устарели и были заменены эквивалентами в пространстве имен System.Collections.Generic.

Используйте взамен Dictionary<string, string>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...