2014-11-21 3 views
0

Итак, вот моя проблема. У меня есть класс продуктов, и я создал ArrayList этого класса. Я могу добавить много новых продуктов в этот массив, но проблема в том, что Array меняет все значения массива в качестве последнего, который я добавил.ArrayList меняет значения при добавлении нового VB.NET

Класс продукта:

Public Class Product 
Dim cod_prod As String 
Dim state As Boolean 

Public Sub New(ByVal cod As String, ByVal est As Boolean) 
    cod_prod = cod 
    state = est 
End Sub 

Public Sub New() 
    cod_prod = "" 
    state = False 
End Sub 

Public Function get_cod_prod() As String 
    Return cod_prod 
End Function 

Public Function get_state() As Boolean 
    Return state 
End Function 

Public Sub set_cod_prod(ByVal cod As String) 
    cod_prod = cod 
End Sub 

Public Sub set_state(ByVal est As Boolean) 
    state = est 
End Sub 
End Class 

И этот класс был я добавить новый продукт в ArrayList.

Dim array_prod As New ArrayList 
Dim nproducts As Integer = 0 

Public Sub add_prod(ByVal prod As Producto) 
    array_prod.Add(prod) 
    nproducts += 1 
End Sub 

Спасибо за помощь.

+0

попробовать это: Dim array_prod() As New ArrayList – Ibra

+0

нет, что делает ошибку компиляции. – Fernando

+0

Я не вижу, что переменная 'array_prod' представляет собой массив – Ibra

ответ

0

Хорошо, посмотрев немного больше на связанные вопросы, я нашел это. Retrieving data from a VB.NET arraylist of objects

Так я решить ее изменить метод так:

Public Sub add_prod(ByVal prod As Producto) 
    Dim nprod As New Producto 
    nprod.set_cod_prod(prod.get_cod_prod) 
    nprod.set_state(prod.get_state) 

    array_prod.Add(nprod) 
    nproductos += 1 
End Sub 
Смежные вопросы