我想我缺少有关DataTables工作原理的一些基本知识。以下过程从开始GetData
,what
以填充的DataTable形式引入。以下所有代码所做的就是传递数据表的副本,对其进行操作,然后将其返回:
Sub GetData(ByVal what As DataTable) Dim Part As DataTable = Generate(what) End Sub Function Generate(ByVal brown As DataTable) Dim lameface As DataTable = DoStuff(brown) Return lameface End Function Function DoStuff(ByVal cow As DataTable) Dim result As DataTable = cow result.Rows.RemoveAt(0) Return result End Function
这上面写的方式,功能DoStuff
将去除顶行result
和 cow
。同样,即使将第一行发送为,brown
也what
将删除该行ByVal
。
如果我将第一行DoStuff
从
Dim result As DataTable = cow
至
Dim result As DataTable = cow.copy
然后cow
,brown
和what
被单独留在家中。为什么是这样?将参数标记ByVal
为应该发送对象的副本而不是原始对象,那么为什么在实例化时告诉我使用副本result
呢?如果我使用整数而不是数据表执行类似的过程,则它会按我期望的那样工作。我对数据表缺少什么?
我在MSDN上有关数据表的文章中闲逛,却没有发现任何有关此问题的信息。谢谢你的帮助!