DataTable dttemp = new DataTable();
dttemp=orderedTable;
dttemp.Rows.Clear();
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它orderedTable也被清除了!有谁知道为什么会这样?
当你执行这一行时:
dttemp = orderedTable;
Run Code Online (Sandbox Code Playgroud)
实际上只有一个DataTable是相关的.在DataTable你的第一行代码创建符合垃圾收集-什么也没有服用任何通知.这里列出的行不会使副本对象 -它使副本的参考,使dttemp和orderedTable指同一DataTable.
DataTable是一种参考类型.这是绝对重要的,你明白引用类型在C#中是如何工作的-否则整个语言都会有莫名其妙的结果你.我有一篇文章,您可能会发现这些文章很有用.
要将代码置于上下文中,想象一下a DataTable实际上是一个房子.您将家庭住址提供给两个不同的人.一个人去把房子涂成红色......然后另一个人去看房子.显然他会发现它是红色的.
重要的是你没有给每个人"你的房子" - 你只是给了他们一个到你家的方式.这就是引用类型在C#中的工作方式.
的价值dttemp是不是DataTable-这是一个参考的DataTable.通过任何其他变量对该对象所做的更改仍将通过dttemp.
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |