Hashtable如何在没有toString()的情况下获取字符串值

时间:2009-11-11 16:31:54

标签: c# class hashtable override tostring

如何在不调用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()而不需要转换为(字符串)。

3 个答案:

答案 0 :(得分:1)

你能投出吗?

(string)hT["someKey"]

请注意,如果这是2.0或更高,则通用Dictionary<string,string>会更简单......并且在1.1 StringDictionary中可以完成工作(尽管IIRC需要注意不区分大小写的情况)关键)。

答案 1 :(得分:0)

如果我理解正确,哈希表中的值是一个字符串?

如果是这样,您需要将对象强制转换为String。

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

答案 2 :(得分:0)

您可以使用System.Collections.Generic.HashSet。或者使用组合而不是继承,即。将哈希表作为您的私有字段并编写自己的索引器来执行ToString()。

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

private Hashtable _ht;

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

}