0
다음 코드의 방법 1이 다른 두 메서드가 수행하는 DataTable을 변경하지 않는 이유를 정확하게 설명 할 수 있습니까?이 DataRow가 변경되지 않은 이유를 설명하십시오.
분명히 어떤 종류의 참조 문제이지만 정확히 어떤 이유입니까? 바보 테스트 데이터 :)위한
Imports System
Imports System.Data
Public Class Test
Public Shared Sub Main()
'Build Table
Dim dt as New DataTable
dt.Columns.Add("ID",GetType(String))
dt.Columns.Add("Name",GetType(String))
'Populate Table
Dim dr as DataRow
dr = dt.NewRow()
dr("ID")="Man" : dr("Name") = "mike" : dt.Rows.Add(dr)
dr = dt.NewRow()
dr("ID")="Man" : dr("Name") = "ian" : dt.Rows.Add(dr)
dr = dt.NewRow()
dr("ID")="Man" : dr("Name") = "rob" : dt.Rows.Add(dr)
dr = dt.NewRow()
dr("ID")="Woman" : dr("Name") = "ann" : dt.Rows.Add(dr)
dr = dt.NewRow()
dr("ID")="Woman" : dr("Name") = "sam" : dt.Rows.Add(dr)
output(dt) 'Output Table
Dim drFilters() as DataRow = dt.Select("ID='Man'") 'Select all Man
'Method 1 does not change dt
'dr = dt.NewRow()
'dr("ID")="cowman" : dr("Name")="bugle"
'drFilters(1)=dr
'Method 2 does change dt
dr = drFilters(1)
dr("ID")="cowman" : dr("Name")="bugle"
'Method 3 does change dt
'drFilters(1)("ID")="cowman" : drFilters(1)("Name")="bugle"
output(dt) 'Output final table
End Sub
Public Shared Sub output(dt as DataTable)
for each dr as DataRow in dt.Rows
Console.WriteLine(dr("ID") + vbTab + dr("Name"))
Next
Console.WriteLine("")
End Sub
End Class
사죄
는drFilters(1)=dr
전화
+1 감사합니다. 훌륭한 답변입니다. 매우 분명 지금 :) –
좋은 대답. 나는 그것이 이미 효과가 있었는지 이해했으며, 나는 여전히 더 잘 우적 우적하다고 생각한다. :) – Chris