2

特定のキーを保持する辞書があるクラスがあります。ただし、値は一般的なものである必要があります。

何かのようなもの:

private Dictionary<String,TValue> _Dictionary;

しかし、TValueは(明らかに)見つかりませんが、他に何を入れる必要がありますか?IListの解決策を見つけましたが、汎用オブジェクトを1つ追加したいだけです。

4

2 に答える 2

2

では、一般的な辞書が必要ですか? 事前定義されたクラスを使用します。

public Dictionary<int, string> _dictionary = new Dictionary<int, string>();

これにより、整数キーと文字列値を持つ辞書が得られます。それらの 1 つだけが変数である Dictionary が必要な場合は、Dictionary を継承して独自の型を作成できます。

public class KeyTypeConstantDictionary<T> : Dictionary<int, T>
{
}

次に、それを使用すると次のようになります。

KeyTypeConstantDictionary<string> x = new KeyTypeConstantDictonary<string>();
// Equivalent to Dictionary<int, string>()
KeyTypeConstantDictionary<SomeObject> x = new KeyTypeConstantDictonary<SomeObject>();
// Equivalent to Dictionary<int, SomeObject>()

うまくいけば、私はあなたの質問を正しく理解しました。

于 2011-03-16T20:56:22.460 に答える
2

これをジェネリック型内で使用している場合は、Tejs の回答が適切です。

ただし、固定タイプのキーを使用して辞書を作成しようとしているだけで、任意の値を格納できる場合、1 つのオプションは値に使用することSystem.Objectです。

 private Dictionary<string, object> _dictionary;

これにより、任意のオブジェクトを値に割り当てることができます。ただし、型の安全性が失われ、オブジェクトをボックス化解除して正しく変換する必要があるため、これは潜在的に危険です。

于 2011-03-16T20:58:22.340 に答える