インスタンス化時にC#辞書に値を挿入する方法は?


149

作成時にC#辞書に値を挿入する方法があるかどうか誰かが知っていますか?次のdict.Add(int, "string")ようなより効率的なものがあれば、各項目に対して実行できますが、したくありません 。

Dictionary<int, string>(){(0, "string"),(1,"string2"),(2,"string3")};

回答:


199

これを行う方法についてのページ全体がここにあります:

http://msdn.microsoft.com/en-us/library/bb531208.aspx

例:

次のコード例でDictionary<TKey, TValue>は、a はタイプのインスタンスで初期化されていますStudentName

var students = new Dictionary<int, StudentName>()
{
    { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}},
    { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}},
    { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}}
};

3
ただし、これは.NET 3.5コンパイラでのみ機能します。
エイドリアン・ゴドン

@ kd7iwp-問題ありません。このサイトの機能の一部は、代替の検索用語を有用なものにルーティングできるようにすることです。
ダニエルEarwicker

ええ、それはほとんどMicrosoftに与えられていることです。彼らは長年にわたって下位互換性にかなり取り組んできました。
PRMan



10

Lambda式を使用して、他のIEnumerableオブジェクトからキーと値のペアを挿入することもできます。キーと値は任意のタイプにすることができます。

Dictionary<int, string> newDictionary = 
                 SomeList.ToDictionary(k => k.ID, v => v.Name);

.NETのあらゆる場所でIEnumerableオブジェクトを使用しているので、はるかに簡単だと思います

お役に立てば幸いです!!!

ちょっと。


7

辞書をインスタンス化して、次のように項目を追加できます。

var dictionary = new Dictionary<int, string>
    {
        {0, "string"},
        {1, "string2"},
        {2, "string3"}
    };

7

C#6以降では、次のように初期化できます。

var students = new Dictionary<int, StudentName>()
{
    [111] = new StudentName {FirstName="Sachin", LastName="Karnik", ID=211},
    [112] = new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317},
    [113] = new StudentName {FirstName="Andy", LastName="Ruth", ID=198}
};

はるかにクリーナー:)


-1

それが完全に機能することを願っています。

Dictionary<string, double> D =new Dictionary<string, double>(); D.Add("String", 17.00);


こんにちは、SOへようこそ!最初にこの質問をした人は.Add(int, "string")、辞書に値を追加する方法を実行したくないと具体的に述べました。申し訳ありませんが、これは質問の答えにはなりません。
Kezz101 2015年

-2

これは一般的には推奨されませんが、不確実な危機の時に使用できます

Dictionary<string, object> jsonMock = new Dictionary<string, object>() { { "object a", objA }, { "object b", objB } };

// example of unserializing
ClassForObjectA anotherObjA = null;
if(jsonMock.Contains("object a")) {
    anotherObjA = (ClassForObjA)jsonMock["object a"];
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.