1

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

4

3 回答 3

1

你可以投吗?

(string)hT["someKey"]

请注意,如果这是 2.0 或更高版本,则泛型Dictionary<string,string>会简单得多……并且在 1.1 中StringDictionary可以完成这项工作(尽管 IIRC 您需要注意密钥中的大小写不敏感)。

于 2009-11-11T16:36:01.330 回答
0

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

如果是这样,您需要将对象转换为字符串。

string test = (string)hT["someKey"];
于 2009-11-11T16:35:21.893 回答
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;
  }
} 

}

于 2009-11-11T16:42:30.510 回答