2016-11-02 4 views
0

에 사전을 추가나는 아래와 같은 코드를 사전 목록

static void Main(string[] args) 
{ 
    List<Dictionary<string, string>> abc = new List<Dictionary<string, string>>(); 

    Dictionary<string, string> xyz = new Dictionary<string, string>(); 
    Dictionary<string, string> klm = new Dictionary<string, string>(); 

    xyz.Add("xyz_1", "4"); 
    xyz.Add("xyz_2", "5"); 

    klm.Add("klm_1", "9"); 
    klm.Add("klm_2", "8"); 

    abc.Add(xyz); 
    xyz.Clear(); 
    /*after this code xyz clear in my abc list. Why ?*/ 
    abc.Add(klm); 
} 

나는 사전의 목록을 만들 수 있습니다. 그리고이 목록에 사전을 추가합니다. 그러나 사전을 추가하면 목록에서 지워지는 것보다 명확한 기능으로 사전이 비어있게됩니다. 대개 내 'abc'목록에는 xyz가 있고 klm 사전에는 해당 값이 있어야합니다. 그러나 clearfunction을 실행하면 xyz 값은 0이됩니다. 이 역을 어떻게 막을 수 있습니까?

+0

사전은 참조 유형이므로 ... 목록에 추가 한 개체와 'xyz'에서 참조한 개체가 같은 개체라는 것을 의미합니다. "하나"를 Clear()하면 "다른 것"에 영향을줍니다 - 동일한 객체를 가리키는 2 개의 참조 –

답변

2

xyzabc에 대한 참조가 추가 되었기 때문에 표시됩니다. 사용 :

abc.Add(new Dictionary<string, string>(xyz)); 
관련 문제