Sql Dim DataTable=DataSet.Tables(TableName)——复制还是引用?
我找不到一个明确的答案,但我需要确定。我有以下代码:Sql Dim DataTable=DataSet.Tables(TableName)——复制还是引用?,sql,vb.net,reference,Sql,Vb.net,Reference,我找不到一个明确的答案,但我需要确定。我有以下代码: Dim daMyInfo As New SqlDataAdapter("select * from [" & TableName & "] (nolock)", objConn) Dim dsMyInfo As New DataSet("MyInfo") ... daMyInfo.FillSchema(dsMyInfo, SchemaType.Source, TableName) daMyInfo.Fill(dsMyInfo,
Dim daMyInfo As New SqlDataAdapter("select * from [" & TableName & "] (nolock)", objConn)
Dim dsMyInfo As New DataSet("MyInfo")
...
daMyInfo.FillSchema(dsMyInfo, SchemaType.Source, TableName)
daMyInfo.Fill(dsMyInfo, TableName)
Dim dtMyInfo As DataTable = dsMyInfo.Tables(TableName)
在后面的代码中,我得到:
For Each NewRow As DataRow In dtMyInfoAdd.Rows
dtMyInfo.ImportRow(NewRow)
Next
Dim objCommandBuilder As New SqlCommandBuilder(daMyInfo)
daMyInfo.Update(dsMyInfo, TableName)
我假设这意味着
dtMyInfo
实际上只是指向与dsMyInfo.Tables(TableName)
相同的对象,但我不确定,而且我更不确定,因为我在MS站点的任何地方都没有找到作为引用提到的对象。DataTable是一种引用类型。在中可以看到,语法部分显示它是类
,而不是结构
。这意味着在进行赋值时,dtMyInfo
变量的值将是对内存中实际数据表对象的引用,而不是对象本身。此时,使用变量的属性和方法就像使用内存中对象的属性和方法一样,因此向变量添加行会将这些行添加到内存中的对象。由于dsMyInfo.Tables(TableName)
表达式引用的是同一个对象,因此新行也将包含在此处。如果您不确定,只需在dtmyinfo.Tables中添加行数,然后使用操作符比较引用即可Dim结果为布尔值=(表1为表2)