问个函数返回对象的的问题
函数如下 
 public   DataTable   return_dt(string   sql) 
 { 
 OleDbConnection   con=new   OleDbConnection(数据库链接字符) 
 try 
 { 
          con.Open(); 
 } 
 catch   (OleDbException   err)    
 {   MessageBox.Show(err.Message);   } 
 OleDbCommand   cmd   =   con.CreateCommand(); 
 cmd.CommandText   =   sql;//sql语句   
 try 
 { 
 dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection)); 
 } 
 catch   (OleDbException   err) 
 { 
       MessageBox.Show(err.Message   +   cmd.CommandText); 
 }   
 cmd.Dispose(); 
 con.Close(); 
 return   (dt);   
 }   
 函数引用: 
 DataTable      ab=   return_dt(string   sql);   
 现在在内存里是有2个DataTable,及函数处理有1个然后又赋值给了ab   ,还是说只有1个DataTable   就是ab
------解决方案--------------------DataTable 是引用类型,因此内存里只有一个真正的 DataTable,   
 即 return_dt(string sql) 的返回值,   
 当然还有一个引用,即 ab!   
 解释完毕!
------解决方案--------------------DataTable  ab= new DataTable(); 
 ab = return_dt(string sql) ; 
 ========================= 
 托管堆有两个DataTable  
 new DataTable();和 return_dt()函数返回的, 
 但new DataTable()由于在栈中没有引用了,很快会被回收,能用的就只有ab指向的这个return_dt(string sql) ;了 
------解决方案--------------------