private static DataTable dt; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string str = "select top 10 * from main"; //從數(shù)據(jù)庫獲取數(shù)據(jù) dt = Model.MyHelp.help.getDT2(str); DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); dt2 = dt; dt1 = dt2; dt1.Rows.Clear(); } }我的需求是 只刪除dt1的值 保留dt的值 但是為什么最后一句會(huì)導(dǎo)致dt的值也被刪除求大神幫助 或提供其他解決方法
2 回答

郎朗坤
TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
要知道這3個(gè)變量都是引用類型,從你的代碼中來看,這3個(gè)變量都是指向內(nèi)存中的同一個(gè)位置。
d1清除了所有的行,那dt也算是清除了。
看了你這些代碼,難道是自己寫的學(xué)習(xí)的代碼?不是真實(shí)的項(xiàng)目的代碼 , 可以是用 Copy的方法 (應(yīng)該是深度的拷貝)
datatable dt1=dt.Copy();
datatable dt2-dt.Copy();
這樣的話,這3個(gè)變量實(shí)際指向的是3個(gè)不同的內(nèi)存的位置。那么操作任何一個(gè),都不會(huì)影響到其他的2個(gè)。

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
同意樓上觀點(diǎn)~,引用類型存儲(chǔ)的是實(shí)際數(shù)據(jù)的引用(指針或者在內(nèi)存中的地址),根據(jù)你寫的代碼 dt dt1 dt2zz指向內(nèi)存中的同一個(gè)引用,清空了dt1,dt dt2自然也會(huì)完全清空。
- 2 回答
- 0 關(guān)注
- 760 瀏覽
添加回答
舉報(bào)
0/150
提交
取消