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

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

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
同意樓上觀點~,引用類型存儲的是實際數據的引用(指針或者在內存中的地址),根據你寫的代碼 dt dt1 dt2zz指向內存中的同一個引用,清空了dt1,dt dt2自然也會完全清空。
- 2 回答
- 0 關注
- 761 瀏覽
添加回答
舉報
0/150
提交
取消