public partial class Form1 : BaseForm
    {
              
        // 取得一个DataSet
        EkiKyoukaiMntDataSet selectResult;
        .....        private void Form1_Load(object sender, EventArgs e)
        {
            // EkiKyoukaiMntDataSet 是一个有结构的DATASET
            selectResult = new EkiKyoukaiMntDataSet();  
            //  赋值
            DataTable a = selectResult.Tables[0];
         }
                     //  button click  按钮点击事件
           private void khButton1_Click(object sender, EventArgs e)
        {                下面是对selectResult.Tables[0]添加数据的操作,不贴了 
        }   结果显示,当执行完khButton1_Click事件后a里面还是空,为什么??

解决方案 »

  1.   

    说明一下,贴错了 DataTable a 是在 Form1_Load 上面声明的。
      

  2.   

           
    修改一下。
       public   partial   class   Form1   :   BaseForm 
            { 
                                
                    //   取得一个DataSet 
                    EkiKyoukaiMntDataSet   selectResult; 
                    DataTable   a ;
                    .....                 private   void   Form1_Load(object   sender,   EventArgs   e) 
                    { 
                            //   EkiKyoukaiMntDataSet   是一个有结构的DATASET 
                            selectResult   =   new   EkiKyoukaiMntDataSet();     
                            //     赋值 
                               a   =   selectResult.Tables[0]; 
                      } 
                                              //     button   click     按钮点击事件 
                          private   void   khButton1_Click(object   sender,   EventArgs   e) 
                    {                                  下面是对selectResult.Tables[0]添加数据的操作,不贴了    
                    } 
      

  3.   

    a在初始化的时候是个空表,Click后也没有对a重新赋值啊
      

  4.   

    不是引用传递吗? 改变了赋值的selectResult.Tables[0] 的值,那么a按道理就应该跟着变啊。
    好比我把 一个对象B赋值给对象A 然后我改变B的内容,A 应该跟着变啊。。难道?
      

  5.   

    请问a       =       selectResult.Tables[0];   在这个时候a有值吗
      

  6.   

    a没有得到selectResult.Tables[0]的引用当然不行了
      

  7.   

    那么我再举个例子。大家知道,对象是引用传递 Class1 c1 = new Class1();
     Class2 c2 = c1;
     c1.name = "name";
     c1.sex = "girl"; 以上结果显示 c2.name 也等于 "name"。 把上面的程序换成
     datatable c1 = new datatable ();
     datatable c2 = c1;
     // 对C1添加数据,改变属性
     .....
     
     结果显示 c2 无任何变化。为何?
      

  8.   

    上面代码 临时写的,有个笔误 
    Class1   c1   =   new   Class1(); 
    Class2   c2   =   c1; 
    应该是Class1   c1   =   new   Class1(); 
    Class1   c2   =   c1; 
      

  9.   

    你看结果一样吗
    DataTable dt1 = new DataTable();
                DataTable dt2 = dt1;            Console.WriteLine("{0}, {1}", dt1.GetHashCode(), dt1.GetHashCode());            dt1.Columns.Add("a", typeof(string));
                Console.WriteLine("{0}, {1}", dt1.Columns.Count, dt2.Columns.Count);            DataRow dr = dt1.NewRow();
                dr[0] = "dt1";
                dt1.Rows.Add(dr);
                Console.WriteLine("{0}, {1}", dt1.Rows[0][0], dt2.Rows[0][0]);
      

  10.   

                    private   void   Form1_Load(object   sender,   EventArgs   e)
                    {
                            //   EkiKyoukaiMntDataSet   是一个有结构的DATASET
                            selectResult   =   new   EkiKyoukaiMntDataSet();    
                            //     赋值
                            selectResult.Tables[0] = new DataTable();
                      } 
      

  11.   

    DataTable   c1   =   new   DataTable(); 
      DataTable c2   =   c1; 
    这样貌似是可以的,改变c1,c2也变
      

  12.   

    引用是没错的,你上面进行 DataTable   a   =   selectResult.Tables[0]; 的时候,
    selectResult里面有没有table.