모두 :C에서 복사하지 않고 2 개의 사전 개체를 교환하는 방법
2 개의 사전 개체 d1과 d2가 있습니다. 그것들은 처음에는 따로 생성되고, 내용은 별도로 추가됩니다. 일부 처리 후 다음 작업을 수행하려고합니다.
- d1 참조 d2;
- 새 개체에 대한 d2 참조를 만듭니다.
내가이 일을 수행하는 C#을 초보자이고 유일한 방법을 검색 할 수 있습니다 :
d1 = new Dictionary<int, int>(d2);
d2 = new Dictionary<int, int>();
나는 아래처럼, C++ 방식처럼 더 효율적으로 할 수 있습니까? 의사 코드 :
d1 = d2;
d2 = new Dictionary<int, int>();
감사합니다.
은'새로운 사전 (D2)는 '통화 실제로 사전 복사 부재 위에 새로운 인스턴스를 생성한다. 이렇게하면 새 객체 참조가 만들어 지므로 (newD1! = oldD2) 의도 한 것과 다를 수 있습니다. –
Dai
@David 콘텐츠가 동일하면 괜찮습니다. 그런데,이 카피는, KeyValuePair 오브젝트의 카피 참조만을 의미하는 깊고 얕은 것입니까? – Sheen
딥 카피입니다. 레드 게이트 리플렉터 (필수 도구)에 따르면 생성자는 각 KeyValuePair 인스턴스에 대해 반복적으로 newDict.Add (pair.Key, pair.Value)를 호출하므로 키와 값의 딥 복사입니다 (키 - 값 쌍 자체). – Dai