Duda métod IndexOf de un Array

16/08/2005 - 22:02 por luis | Informe spam
La documentación dice "Los elementos se comparan con el valor especificado,
utilizando el método Object.Equals. Si el elemento es de tipo no intrínseco
(definido por el usuario), se utiliza la implementación Equals de dicho
tipo."

Tengo el siguiente código:

using System;

class Persona

{

string nombre;

int edad;

public Persona(string nombre, int edad)

{

this.nombre=nombre;

this.edad=edad;

}

public bool Equals(Persona x)

{

if(nombre==x.nombre && edad==x.edad)

return true;

else

return false;

}

}

class MainClass

{

public static void Main(string[] args)

{

Persona []b={new Persona("ana",10),new
Persona("pepe",20)};

Persona c=new Persona("pepe",20);

Console.WriteLine(Array.IndexOf(b,c));



}

}



Pero el método Equals no se ejecuta. ¿Qué estoy haciendo mal?

Preguntas similare

Leer las respuestas

#1 Jose Selesan
16/08/2005 - 22:16 | Informe spam
Hola. Lo que te está faltando es la palabra override en
la definición del método Equals:

public override bool Equals(Persona x)public bool Equals
(Persona x)
{...}

Saludos
José
La documentación dice "Los elementos se comparan con el


valor especificado,
utilizando el método Object.Equals. Si el elemento es de


tipo no intrínseco
(definido por el usuario), se utiliza la implementación


Equals de dicho
tipo."

Tengo el siguiente código:

using System;

class Persona

{

string nombre;

int edad;

public Persona(string nombre, int edad)

{

this.nombre=nombre;

this.edad=edad;

}

public bool Equals(Persona x)

{

if(nombre==x.nombre &&


edad==x.edad)

return true;

else

return false;

}

}

class MainClass

{

public static void Main(string[] args)

{

Persona []b={new Persona


("ana",10),new
Persona("pepe",20)};

Persona c=new Persona("pepe",20);

Console.WriteLine(Array.IndexOf


(b,c));



}

}



Pero el método Equals no se ejecuta. ¿Qué estoy haciendo


mal?






.

Respuesta Responder a este mensaje
#2 luis
17/08/2005 - 00:14 | Informe spam
Ya veo donde está el fallo. El override lo había probado pero me daba error.
Ahora como me lo has dicho lo he vuelto a probar y me he fijado mejor y el
tema es que el Equals debe quedar así:

public override bool Equals(Object x)

Gracias


"Jose Selesan" escribió en el mensaje
news:05ed01c5a29f$74a29900$
Hola. Lo que te está faltando es la palabra override en
la definición del método Equals:

public override bool Equals(Persona x)public bool Equals
(Persona x)
{...}

Saludos
José
La documentación dice "Los elementos se comparan con el


valor especificado,
utilizando el método Object.Equals. Si el elemento es de


tipo no intrínseco
(definido por el usuario), se utiliza la implementación


Equals de dicho
tipo."

Tengo el siguiente código:

using System;

class Persona

{

string nombre;

int edad;

public Persona(string nombre, int edad)

{

this.nombre=nombre;

this.edad=edad;

}

public bool Equals(Persona x)

{

if(nombre==x.nombre &&


edad==x.edad)

return true;

else

return false;

}

}

class MainClass

{

public static void Main(string[] args)

{

Persona []b={new Persona


("ana",10),new
Persona("pepe",20)};

Persona c=new Persona("pepe",20);

Console.WriteLine(Array.IndexOf


(b,c));



}

}



Pero el método Equals no se ejecuta. ¿Qué estoy haciendo


mal?






.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida