Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-02-2008
quilaztli quilaztli is offline
Registrado
 
Registrado: feb 2008
Posts: 1
Poder: 0
quilaztli Va por buen camino
Problemas al extraer un elemento de ArrayList, se modifica solo???

Hola a todos, estoy haciendo un programa en el que necesito crear un vector de ArrayList. Lo que hice fue crear una clase llamada cosaContainer que tiene un arrayList y dos metodos(Add y Get), que se encargan de incluir y regresarme el valor de arrayList en un indice dado. Los objetos que almaceno en cosaContainer son de tipo "cosa. "Cosa" tiene un entero y 2 metodos: crea, y vecino, este ultimo metodo, multiplica el entero por 2.

Lo que yo necesito es crear una primera instancia cosa y almacenarla en el cosaContainer y después extraer ese objeto y con él llamar a la función vecino, para agregar al vecino a mi cosaContainer. ¿Me explico? El problema es que al extraer del arrayList() el objeto padre( por asi decirlo), modifica también mi objeto original. Es decir si tengo el array[2,4] y pido el primer valor del array para aplicarle el método vecino, que solo hace la multiplicacion ( v=get(0) ; v.vecino me hace esto v=4 y el vector[4,4]. ¿Me explico?

¿Como puedo hacer para que no me modifique el valor ORIGINAL del arrayList?Les pongo mi codigo.

GRACIAS

--------------------------------------------------------------------------------------------------------------------

public class cosa
{
int numO;

public void vecino() {
this.numO = this.numO * 2;
}

public cosa crea() {
Random r = new Random();
numO = r.Next(10);
return this;
}
}

-----------------------------------------------------------------------------------------------------------------------------

public class solutionContainer
{
public int count;
public ArrayList list= new ArrayList();

public solutionContainer() {
list = new ArrayList();
count = 0;
}

public void add(cosa s) {
list.Add(s);
list[count] = s;
count++;
}

public cosa Get(int index) {
Array nlist = (Array)list.ToArray().Clone();
return (cosa)nlist.GetValue(index);
}

----------------------------------------------------------------------------------------------------------

//Creo mi arreglo

solutions = new solutionContainer[5];
for (int j = 0; j < 5; j++)
solutions[j] = new solutionContainer();

//Creo los primeros valores de cosa y los almaceno en mi vector

cosa s=new cosa();
for (int j = 0; j < 5; j++){
Random r = new Random();
s = s.crea();
solutions[j].add(s);
}

//Creo el vecino y me modifica el OBJETO ORIGINAL!!!!!!

for (int j = 0; j < 5; j++)
{
s = solutions[j].Get(0);
s.vecino();
solutions[j].add(s);
}
Responder Con Cita
  #2  
Antiguo 22-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
En .Net ¿no existe el TList y TObjectList?
Esas 2 clases ya incorporan lo que estas haciendo, te puede ser más libiano.

De todas formas, intentando ayudar sin tener demasiada experiencia en C.

Quizás el problema esté aquí:
Código Delphi [-]
public cosa Get(int index) {
Array nlist = (Array)list.ToArray().Clone();
return (cosa)nlist.GetValue(index);
}
Creo que ahí estás devolviendo un puntero, por ello te modifica el original.

La primera línea no la entiendo, parece que clonas el array, pero lo que deberías clonar sería el "cosa"

Por cierto, la clase cosa, más abstracta no puede ser, ¿no había otro nombre para darle?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema con ArrayList reina JAVA 5 08-05-2012 23:10:32
Problemas para deseleccionar un elemento de un listbox neon OOP 5 19-08-2011 16:00:18
Extraer solo el nombre de un archivo sin su extencion coyule API de Windows 2 13-01-2007 04:12:01
ArrayList YaninaGenia .NET 2 12-06-2006 19:53:58
Extraer solo nombre de archivo y extensión JODELSA Varios 11 13-07-2005 15:04:09


La franja horaria es GMT +2. Ahora son las 09:33:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi