C 中List T 物件的深度拷貝問題

2021-10-20 23:58:53 字數 1228 閱讀 3700

一、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...