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이됩니다. 이 역을 어떻게 막을 수 있습니까?
사전은 참조 유형이므로 ... 목록에 추가 한 개체와 'xyz'에서 참조한 개체가 같은 개체라는 것을 의미합니다. "하나"를 Clear()하면 "다른 것"에 영향을줍니다 - 동일한 객체를 가리키는 2 개의 참조 –