Когда вы вызываете drFilters(1)=dr
, вы заменили ссылку DataRow
в коллекции фильтров, которая является отдельной коллекцией от ссылок на строки в самом DataTable
. dt.Rows
- это список ссылок на DataRow
объектов, как и drFilters()
, но изменение записи в одном списке ссылок никоим образом не влияет на другой список ссылок.
dt.Rows
0 => dt.Rows(0)
1 => dt.Rows(1)
2 => dt.Rows(2)
3 => dt.Rows(3)
4 => dt.Rows(4)
drFilter()
0 => dt.Rows(0)
1 => dt.Rows(1)
2 => dt.Rows(2)
После вызова drFilters(1)=dr
коллекции выглядят следующим образом
dt.Rows
0 => dt.Rows(0)
1 => dt.Rows(1)
2 => dt.Rows(2)
3 => dt.Rows(3)
4 => dt.Rows(4)
drFilter()
0 => dt.Rows(0)
1 => dr
2 => dt.Rows(2)
Обратите внимание, что dt.Rows
оставлено без изменений. Однако когда вы извлекаете объект drFilters(1)
и вносите в него изменения, у вас есть ссылка непосредственно на dt.Rows(1)
, поэтому изменения его свойств отражаются в выходных данных dt
.
Надеюсь, это поможет!