Hashtable和ArrayList等經(jīng)常需要深度拷貝,而.Net沒(méi)有現(xiàn)成的函數(shù)可以調(diào)用,我從國(guó)外找了一個(gè)方法
public object Clone()
{
BinaryFormatter Formatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
MemoryStream stream = new MemoryStream();
Formatter.Serialize(stream, this);
stream.Position = 0;
object clonedObj = Formatter.Deserialize(stream);
stream.Close();
return clonedObj;
}
繼承了Clonable接口之后,像這樣重寫(xiě)Clone()方法就可以了,他利用了序列化和反序列化的原理,將序列化的流丟入內(nèi)存,再?gòu)膬?nèi)存中反序列化回來(lái)就OK了!
---------------------------------------------------------
專注移動(dòng)開(kāi)發(fā)
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2008-02-12 23:52
TiGERTiAN 閱讀(2554)
評(píng)論(2) 編輯 收藏 所屬分類:
DotNet