我需要多次克隆相當大的對象,並且我正在尋找更快的方法來完成它。幾次克隆對象的最快方法是什麼
現在我使用BinaryForamter
到MemoryStream
的序列化。因此,這裏是我想用的功能,我只是講(DeserializeToList
的方法,我在尋找):
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);
}
沒有任何人有什麼想法?
更新:
我不想改變MyClass
。這就是我使用二進制序列化的原因。所以MyClass.Clone
現在不是解決方案。
更新2:
我不想連碰MyClass
或它們的屬性。所以手動屬性複製不是我期待的方式。
如果你的對象是你的建議一樣大,記住,這個解決方案將需要大約3倍的內存來執行克隆操作。 OriginalObject + MemoryStream + CloneObject。通過手動克隆所需的字段,您可能會獲得更快的性能和更好的內存利用率。 –
@BradleyUffner是的,沒錯。但是現在我不想改變'MyClass' – Alexander
然後檢查序列化代理。它允許您在不修改原始類的情況下執行手動二進制序列化。它可以是一個複雜的想法 –