1

以下の構文を使用してHashTableオブジェクトを初期化できます。名前付きパラメータを使用する `HashTable`オブジェクトをどのように初期化するか?

var listTinhThanh = new System.Collections.Hashtable() 
{ 
    { "key", someObject } 
}; 

私はのようにコードを使用する:

var listTinhThanh = new System.Collections.Hashtable() 
{ 
    { Key:"key", Value:someObject } 
}; 

しかし、それは動作しません。回避策はありますか?

+1

1)なぜHashTableで辞書ではないのですか? 2)なぜ2番目の構文が好きですか? – CodesInChaos

+0

ちょうど1つの注釈:HashtableではなくDictionary <>を使用してみませんか? –

+0

'{{" blah "、1}}'は本当に '.Add(" blah "、1)'のための砂糖です。そしてHashTableについて、.NET 1.0を実行していますか? – Skurmedel

答えて

5

いいえ、回避策はありません。このような構文は、:のためC#には存在しない可能性があります。また、最初は私には短いように思える、なぜ私は二番目を必要とするのだろうか。

これは、Hashtableの代わりに強いタイプのDictionary<TKey, TValue>を使用することをお勧めします。あなたが得ることができる最も近いのはこれです:

var listTinhThanh = new[] 
{ 
    new { Key = "key1", Value = someObject1 }, 
    new { Key = "key2", Value = someObject2 }, 
    new { Key = "key3", Value = someObject3 }, 
}.ToDictionary(x => x.Key, x => x.Value); 
+0

これを試してみたところ、'現在のコンテキストに '名前'値 'が存在しません。'、 '名前 'キー'は存在しません。現在のコンテキスト '。 –

+0

@Nam Gi VU、これはLINQです。 'System.Core'アセンブリを参照し、' System.Linq'名前空間を含める必要があります。 –

関連する問題