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"]; 

それは動作しますが、呼び出しも (string) へのキャストも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 としてキャストする必要があります。

string test = (string)hT["someKey"];
于 2009-11-11T16:35:21.893 に答える
0

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

}

于 2009-11-11T16:42:30.510 に答える