一、list物件中的t是值型別的情況(int 型別等)
對於值型別的list直接用以下方法就可以複製:
listoldlist = new list();
oldlist.add(..);
listnewlist = new list(oldlist);
二、list物件中的t是引用型別的情況(例如自定義的實體類)
1、對於引用型別的list無法用以上方法進行複製,只會複製list中物件的引用,可以用以下擴充套件方法複製:
static class extensions
//當然前題是list中的物件要實現icloneable介面
}
2、另一種用序列化的方式對引用物件完成深拷貝,此種方法最可靠
public static t clone(t realobject)
}
3、利用system.xml.serialization來實現序列化與反序列化
public static t clone(t realobject)
}
三、對上述幾種物件深拷貝進行測試
測試如下:
using system;
using system.collections.generic;
using system.collections ;
using system.linq;
using system.text;
using system.io;
using system.runtime.serialization;
using system.runtime.serialization.formatters.binary;
namespace linq
set
}private string *** = "";
public string ***
set }}
class linqtest
} public static void main()
}}
C 中List物件的深度拷貝問題
一 list物件中的t是值型別的情況 int 型別等 對於值型別的list直接用以下方法就可以複製 listoldlist new list oldlist.add listnewlist new list oldlist 二 list物件中的t是引用型別的情況 例如自定義的實體類 1 對於引用型別...
Flex 物件的深度拷貝
物件的深度拷貝方法,在 應用中經常需要傳遞乙個物件引數,傳遞過去的物件的修改又不希望對原物件產生影響,用該物件方法可以輕鬆實現了 package 使用方法 var instancea classa new classa var instancecopy classa copyutil.clone i...
Flex 物件的深度拷貝
物件的深度拷貝方法,在 應用中經常需要傳遞乙個物件引數,傳遞過去的物件的修改又不希望對原物件產生影響,用該物件方法可以輕鬆實現了 package 使用方法 var instancea classa new classa var instancecopy classa copyutil.clone i...