나는 꽤 큰 개체를 여러 번 복제해야하며이를 수행하는 더 빠른 방법을 찾고 있습니다.개체를 여러 번 복제하는 가장 빠른 방법은 무엇입니까
이제는 BinaryForamter
을 사용하여 MemoryStream
에 직렬화를 사용합니다.
var originalObject = new MyClass();
var objectClones = new List<MyClass>();
var cloneCount = 10;
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, originalObject);
stream.Seek(0, SeekOrigin.Begin);
objectClones = (MyClass)formatter.DeserializeToList(formatter, cloneCount);
}
는 사람이 어떤 생각을 가지고 있습니까 : 그래서 여기에 내가 (DeserializeToList
내가위한 방법을 찾고있다)에 대해 말하고 기능을 사용하고 싶습니다 어떻게?
업데이트 : MyClass
을 변경하지 않으
. 그래서 바이너리 직렬화를 사용합니다. 따라서 MyClass.Clone
은 현재 해결책이 아닙니다.
UPDATE 2 :
난 MyClass
하거나 속성을 터치하지 않습니다. 그래서 수동으로 복사하는 것은 내가 찾는 방법이 아닙니다.
당신의 목적은 당신이 제안처럼 큰 경우,이 솔루션은 복제 작업을 수행하는 데 약 3 배 많은 메모리를 필요가 있다는 점에 유의하십시오. OriginalObject + MemoryStream + CloneObject입니다. 필요한 필드를 수동으로 복제하면 성능이 향상되고 메모리 사용률이 향상 될 수 있습니다. –
@BradleyUffner 네, 그렇습니다. 하지만 다음 지금 – Alexander
체크 아웃 직렬화 대리를위한 변화 'MyClass'을 좋아하지 않을 것이다. 원래 클래스를 수정하지 않고 수동으로 이진 직렬화를 수행 할 수 있습니다. 당신이 –