2016-01-26 1 views
0

Я передаю список BindingList (Of T) в список (из T), и я испытываю, что значение List продолжает обновлять себя со значением DataGridViewSuppliers. DataSourceBindingList (of T) to List (of T)

mInitialValue As New List(Of T) 
Private Property DataSource As BindingList(Of T) 
    Get 
     If DataGridViewSuppliers.DataSource Is Nothing Then 
      DataGridViewSuppliers.DataSource = New BindingList(Of T) 
     End If 
     Return CType(DataGridViewSuppliers.DataSource, BindingList(Of T)) 
    End Get 
    Set(value As BindingList(Of T)) 
     DataGridViewSuppliers.DataSource = value 
    End Set 
End Property 

    DataSource = lElements 
    mInitialValue = lSuppAccounts.ToList() 

Все, что я хочу, это сохранить начальное значение списка привязки в отдельный список.

+0

Возможно, вы случайно переназначили или обновили 'mInitialValue' где-то, если он изменяется вместе с' lSuppAccounts' (?). Неясно, как/если 'lSuppAccounts' - это DS/BindingList. Но 'mInitialValue = lSuppAccounts.ToList()' создает новый список и сохраняет его. См. Https://dotnetfiddle.net/dL7GtX – Plutonix

ответ

1

BindingList (Of T) наследует список (Of T), поэтому, когда вы его передаете, он не создает копию, он просто позволяет использовать все те функции List (Of T). В любое время вы можете передать этот список (Of T) обратно в BindingList (Of T), а затем использовать его функции. Это называется полиморфизмом. Вы не делаете копии данных, вы передаете указатель памяти в исходный список.

Что вы хотите, это копия данных, которая не является указателем на память, но является собственным пространством памяти. Для этого вы можете использовать метод списка CopyTo(). Он сделает копию, которую вы затем можете поместить в другой список.

+0

. Я буду отмечать это как ответ, потому что вы правы в первой части, что приводит меня к правильному решению, однако CopyTo() не создает печатную копию – wookiee

 Смежные вопросы

  • Нет связанных вопросов^_^