인스턴스화에서 C # 사전에 값을 삽입하는 방법은 무엇입니까?


149

C # Dictionary를 만들 때 값을 삽입 할 수있는 방법이 있는지 아는 사람이 있습니까? dict.Add(int, "string")더 효율적인 것이 있다면 각 항목마다 할 수는 있지만 원하지는 않습니다 .

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

답변:


199

이를 수행하는 방법에 대한 전체 페이지가 있습니다.

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

예:

다음 코드 예제에서 a Dictionary<TKey, TValue>는 다음 유형의 인스턴스로 초기화됩니다 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 컴파일러에서만 작동합니다 ... 명심하십시오.
Adrian Godong 2016 년

@ kd7iwp-문제 없음,이 사이트의 기능 중 일부는 다른 검색어가 유용한 것으로 이동할 수 있도록하는 것입니다.
Daniel Earwicker

네, 그것은 마이크로 소프트에게 주어진 것입니다. 그들은 수년에 걸쳐 역 호환성을 약속했습니다.
PRMan

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

13

당신은 거의 그곳에있었습니다.

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

10

Lambda 식을 사용하여 다른 IEnumerable 객체에서 Key Value 쌍을 삽입 할 수도 있습니다. 키와 값은 원하는 모든 유형이 될 수 있습니다.

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

-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.