Visual Basic.NET - Coleccion por parametro

 
Vista:

Coleccion por parametro

Publicado por Gustavo (20 intervenciones) el 29/12/2003 22:29:40
Hola gente a ver si me pueden ayudar

desde un el formulario A paso por parametro Byval una coleccion propia
con por ejemplo 3 valores a otro formulario B
despues modifico dicha coleccion en el formulario A
El problema que tengo es que el cambio tambien se refleja en el formulario B y esto no es lo que quiero ya que por algo lo paso como byval

Como puedo evitar esto

gracias de antemano por ayudarme

Gustavo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Coleccion por parametro

Publicado por Edgar (1501 intervenciones) el 30/12/2003 02:17:40
Hola

La mejor manera de evitar eso es hacer una copia de tu coleccion y pasar la copia como parámetro... Al pasar un parametro como parámetro por valor te garantiza que no vas a poder sustituir la colección por otra a través de una asignación, pero los items si los puedes cambiar... por eso te recomiendo que copies la colección

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Coleccion por parametro

Publicado por Gustavo (20 intervenciones) el 30/12/2003 14:13:05
Hola Edgar hice lo que me aconsejaste pero sigo con el mismo problema.

Segun me dijeron la solucion es pasar item por item a una nueva coleccion. Esto lo probe y anda pero no me parece correcto trabajarlo de esta manera.

Saludos
Gustavo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 153
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

RE:Coleccion por parametro

Publicado por Yamil Bracho (631 intervenciones) el 30/12/2003 15:56:29
Creo que puedes tener varias soluciones :
1) Crear la coleccion como una variable global en un modulo (no recomendable)
2) Crear un modulo o una clase que tenga la coleccion y dos metodos para actualizar la coleccion. Si es una clase la puedes crear como estatica o como un singlenton para que compartas la instancia entre los dos formularios
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Coleccion por parametro

Publicado por Edgar (1501 intervenciones) el 31/12/2003 01:26:29
Hola

Es posible que los items de tu coleccion sean objetos (no tipos "nativos" de datos como integer, string o double) Si estoy en lo correcto, entonces intenta sustituyendo la clase por una estructura... puedes ver como hacerlo en la siguiente página http://www.vbdotnetheaven.com/Code/Jun2003/2036.asp

Existen grandes diferencia entre un objeto y una estructura... en primer lugar los objetos son creados por referencia (por esa razón al tratar de copiarlos en la otra colección se sigue modificando, porque estas copiando la referencia) las estrucutras son creadas por valor, por lo que al copiarlas a la otra colección se copiara el valor y no la referencia.

Otra diferencia es que las estructuras no se pueden heredar...

Ahora, si deseas continuar con usando clases, aunque no te parezca correcto, la solución es pasar item por item a la nueva colección... El problema surge por la forma en que .NET maneja los apuntadores de las variables..

De todas maneras dime que metodo usaste para copiar la colección y que tipo de datos contiene la colección para saber si lo que te dije es correcto o para ver que solución se le puede buscar a tu problema

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Coleccion por parametro

Publicado por Gustavo (20 intervenciones) el 05/01/2004 13:59:59
Edgar.

Todo lo que dijiste es correcto yo estoy usando una coleccion dentro de una clase que paso por parametro. esta coleccion almacena una variable de un tipo definido por mi.

Public Structure My_Tipe_Campo
Dim Nombre As String
Dim Seleccionado As Boolean
End Structure

Vi la paguina que me comentaste y me parece muy piola. creo que es la solucion mas adecuada a mi problema.

Muchas pero muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar