Dictionary 집합 내용 을 옮 겨 다 니 며 삭제 하 는 방법

930 단어 데이터 구조
데이터 구 조 를 옮 겨 다 닐 때 는 원 데이터 구 조 를 수정 할 수 없다.그렇지 않 으 면 잘못 을 던 질 것 이다.
내 가 자주 사용 하 는 해결 방법 은 이 복사 본 을 옮 겨 다 니 는 것 이다.(데이터 가 크 지 않 으 면)
예 를 들 어 이 코드:
IDictionary<int, string> ht = new Dictionary<int, string>();
ht.Add(1, "one");
ht.Add(2, "two");

// Print "one,two"
Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));

foreach (int key in new List<int>(ht.Keys)) {
    if (key == 1) ht.Remove(key);
}

// Print "two"
Console.WriteLine(String.Join(",", ht.Values.Select(i => i.ToString()).ToArray()));

 나 는 옮 겨 다 닐 때 복사 본 을 만 들 었 다.코드 는 new List < int > (ht. Keys) 로 List 의 구조 복사 함 수 를 사 용 했 습 니 다.
ht. Keys 를 복사 합 니 다.그 후의 foreach 는 사실 이 복사 본 을 옮 겨 다 니 고 있 습 니 다.

좋은 웹페이지 즐겨찾기