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?
 

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?






.

Preguntas similares