Hashtable как получить строковое значение без toString () - PullRequest
1 голос
/ 11 ноября 2009

Как я могу получить строковое значение из хеш-таблицы без вызова метода toString ()?

пример: мой класс:

public class myHashT : Hashtable
{
 public myHashT () { }
 ...
 public override object this[object key]
      {
         get
         {
            return base[key].ToString(); <--this doesn't work!
         }
         set
         {
            base[key] = value;
         }
      } 
}

В другом классе:

myHashT hT;
string test = hT["someKey"]; 

работает с hT["someKey"].toString();, но мне нужно без вызова ToString() и без приведения к (string).

Ответы [ 3 ]

1 голос
/ 11 ноября 2009

Ты можешь просто разыграть?

(string)hT["someKey"]

Обратите внимание, что если это 2.0 или выше, обобщенный Dictionary<string,string> будет гораздо проще ... и в 1.1 StringDictionary будет работать (хотя IIRC вам нужно следить за регистронезависимостью в ключе).

0 голосов
/ 11 ноября 2009

Вы можете использовать System.Collections.Generic.HashSet. Поочередно используйте композицию вместо наследования т.е. hashtable будет вашим личным полем и напишите ваш собственный индексатор, который выполняет ToString ().

public class myHashT
{
public myHashT () { }
...

private Hashtable _ht;

public string this[object key]
{
  get
  {
     return _ht[key].ToString();
  }
  set
  {
     _ht[key] = value;
  }
} 

}

0 голосов
/ 11 ноября 2009

Если я правильно понимаю, значение в хеш-таблице является строкой?

Если это так, вам нужно привести объект в качестве строки.

string test = (string)hT["someKey"];
...