整容说文库 > 程序代码 > 教育资讯

设定DataGrid的DataSource是在传值吗?

来源:学生作业帮助网 编辑:整容说文库 时间:2020/02/29 19:07:15 程序代码
设定DataGrid的DataSource是在传值吗?程序代码
老听说所谓数据绑定,所以一直认为是传址,可今天看着自己早已用习惯的一段代码忽又觉得不对

窗体上有个用于显示数据的DataGrid控件DG,我的显示函数大致如下:

Private Sub ShowData()
Dim DT As New DataTable
DT = ......   '填充DataTable的操作
DG.DataSource = DT
End Sub

DT定义为局部变量,根据理论,当ShowData函数运行完毕时DT的生命周期也就结束了,即DT的资源可能被回收,可是显然此后仍可以继续在窗体上操作DG中所显示的数据,所以又觉得DG.DataSource = DT应是传值过程

到底是不是这样呢?
DG.DataSource = DT绑定一直存在的,所以没有回收?
对象没有被任何引用才会回收。
楼上二位的意思是DG.DataSource = DT仍为传地址,只是DT资源在重设DG.DataSource前不会被释放,是这样吗?
到底是传值还是传址还真不知道……没想过,呵呵!
"当ShowData函数运行完毕时DT的生命周期也就结束了,即DT的资源可能被回收"---------
你设个断点到ShowData函数刚刚执行完毕,然后再这个时候再察看一下DT,看看DT里面有什么。
我试过,在End Sub处看,DT仍完整处在,即使DG.DataSource = DT后加一句DT.Dispose,在End Sub处看,DT仍未释放,唯一不确定的是End Sub之后DT是否被释放了
能绑定的数据源实现了接口,控件绑定时调用接口的方法获得数据。
没有引用的时候资源才会被释放,这个是由 .net 内部机制控制的,什么时候回收这些资源不是很确定。
按照你写的码,我试了。End Sub之后,DT确实不存在了。感觉DT和DG.DataSource指向的是同一个地址,
DT不存在了,只表示DT的指向不存在了;DG.DataSource仍然指向那个地址,那个地址仍然存在。感觉是
DT和DG两个不同对象指向同一地址,所以还是传地址。
 没注意过这个问题。。。。
程序代码