当前位置:编程学习 > C#/ASP.NET >>

datatable

 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的值也被删除

求大神帮助 或提供其他解决方法

--------------------编程问答--------------------  dt2 = dt;
  dt1 = dt2;

最后的结果是dt2,dt1指向的是同一个对象dt
先弄清 C#值类型与引用类型 --------------------编程问答--------------------
dt1.dt2在栈存的是一个引用地址。只向堆中的数据都是一样的。

同意楼上 --------------------编程问答-------------------- 为什么要删除dt2???

dt1和dt2是相同的。要么都删了,要么直接在dt1操作。要dt2干嘛? --------------------编程问答--------------------
引用 1 楼  的回复:
dt2 = dt;
  dt1 = dt2;

最后的结果是dt2,dt1指向的是同一个对象dt
先弄清 C#值类型与引用类型



那请问怎么解决呢  我现在是需要一个和DT结构相同的datatable --------------------编程问答-------------------- DataTable dt1 = dt2.Clone();
然后循环下给这个DataTable赋值 --------------------编程问答--------------------
引用 5 楼  的回复:
DataTable dt1 = dt2.Clone();
然后循环下给这个DataTable赋值


++
Clone --------------------编程问答-------------------- 代码从上到下执行,赋值从右到左

补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,