BindingList를 복사하는 가장 좋은 방법은 무엇입니까?C# BindingList를 복사하는 가장 좋은 방법은 무엇입니까?
그냥 ForEach()를 사용 하시겠습니까? 아니면 더 좋은 방법이 있습니까?
BindingList를 복사하는 가장 좋은 방법은 무엇입니까?C# BindingList를 복사하는 가장 좋은 방법은 무엇입니까?
그냥 ForEach()를 사용 하시겠습니까? 아니면 더 좋은 방법이 있습니까?
Foreach는 가장 쉬운 방법이며, 성능 오버 헤드가있는 경우 최소한입니다.
그리고 이것에 대해서? BindingList list2 = new BindingList (list1.toList()) – Martijn
toList를 디 컴파일하면 거의 동일하게 나타납니다.) – TomTom
이것은 저에게 효과적이었습니다. – TheGateKeeper
BindingList에는 IList를 사용할 수있는 생성자가 있습니다. 그리고 BindingList는 IList를 구현합니다. 그래서 그냥 다음을 수행 할 수 있습니다
두 번째 목록을 만듭니다 물론BindingList newBL = new BindingList(oldBL);
그 같은 객체에서 단지 점. 실제로 목록의 개체를 복제하려면 더 많은 작업을 수행해야합니다. 삭제 된 대답에서
: 영업 깊은 사본을 원하는 경우
다음 객체 직렬화 유효한 옵션이 깊은 비 참조 복제 사본
을 얻을 수 드를 직렬화 .
@Ismail S, 삭제를 취소해야한다고 생각합니다. –
내 구해 주셔서 감사합니다 :). 이 사람들은 나에 대해 나쁜 말을 사용하고 있습니다. – IsmailS
목록의 전체 복사본을 얻으려면 직렬화/비 직렬화 경로를 사용합니다. 그것은 잘 작동하지만 검색 화면과 같은 큰 목록에서 성능이 저하되므로 5000 이상의 항목이있는 목록에서는 사용하지 않는 것이 좋습니다.
using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace ProjectName.LibraryName.Namespace { internal static class ObjectCloner { /// /// Clones an object by using the . /// /// The object to clone. /// /// The object to be cloned must be serializable. /// public static object Clone(object obj) { using (MemoryStream buffer = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(buffer, obj); buffer.Position = 0; object temp = formatter.Deserialize(buffer); return temp; } } } }
복사 방법? 다른 목록에? 기본 객체의 동일한 인스턴스 또는 복제 된 새 인스턴스? –
모든 인스턴스를 다른 목록에 복사하려고합니다. – Martijn
Martijn, 깊거나 얕은 복사본을 원하십니까? –