Sobrecarga toString, getHashCode, equals
En C#, los métodos ToString()
, GetHashCode()
y Equals()
son métodos importantes que se utilizan para proporcionar una representación de cadena, un código hash y una comparación de igualdad para objetos. Aquí hay una explicación detallada de cada uno de ellos:
- ToString(): Este método se utiliza para proporcionar una representación de cadena de un objeto. La implementación predeterminada del método
ToString()
devuelve el nombre completo del tipo del objeto. Puedes sobrescribir este método para proporcionar una representación de cadena más útil. Aquí hay un ejemplo:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
return $"{FirstName} {LastName}";
}
}
En este ejemplo, la clase Person
sobrescribe el método ToString()
para proporcionar una representación de cadena que incluye el nombre y el apellido de la persona.
- GetHashCode(): Este método se utiliza para proporcionar un código hash para un objeto. El código hash se utiliza para identificar de manera única un objeto en una tabla hash. La implementación predeterminada del método
GetHashCode()
devuelve un código hash basado en la dirección de memoria del objeto. Puedes sobrescribir este método para proporcionar un código hash más útil. Aquí hay un ejemplo:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override int GetHashCode()
{
return FirstName.GetHashCode() ^ LastName.GetHashCode();
}
}
En este ejemplo, la clase Person
sobrescribe el método GetHashCode()
para proporcionar un código hash que se basa en los valores de las propiedades FirstName
y LastName
.
- Equals(): Este método se utiliza para comparar dos objetos para determinar si son iguales. La implementación predeterminada del método
Equals()
compara las direcciones de memoria de los objetos. Puedes sobrescribir este método para proporcionar una comparación de igualdad más útil. Aquí hay un ejemplo:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
{
return false;
}
Person other = (Person)obj;
return FirstName == other.FirstName && LastName == other.LastName;
}
}
En este ejemplo, la clase Person
sobrescribe el método Equals()
para proporcionar una comparación de igualdad que se basa en los valores de las propiedades FirstName
y LastName
.