2009-11-11 82 views
1

如何從哈希表中獲取字符串值而無需調用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()並沒有鑄造(串)。

+0

你是什麼意思它不工作?編譯錯誤?如果你要返回一個對象,爲什麼你需要ToString()? base [key]會給你一個對象。 – 2009-11-11 16:45:11

回答

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; 
    } 
} 

}

0

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

如果是這樣,則需要將對象作爲字符串進行強制轉換。

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

你可以施放嗎?

(string)hT["someKey"] 

需要注意的是,如果這是2.0或以上,通用Dictionary<string,string>會簡單得多......和1.1 StringDictionary會做的工作(雖然IIRC你需要在關鍵看爲不區分大小寫)。

+0

閱讀速度如何? – Jooj 2009-11-11 16:55:00

+0

它會大致相同; O(1) – 2009-11-11 17:32:59