Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Utilidade dos métodos ToString, Equals, GetHashCode e GetType

Qual a utilidade dos métodos : ToString, Equals, GetHashCode e GetType? A atividade não explica o funcionamento correto deles.

2 respostas
solução!

Olá Rodolfo, Tudo bem?

Existem aplicações práticas para estes métodos, o ToString é invocado quando você tenta converter um objeto para string, por exemplo:

Console.WriteLine(objeto);
// Ou ainda 
Console.WriteLine("Conta Corrente: {0}", conta);

Nestes casos o ToString é acionado por baixo dos panos, onde ele retorna uma string que é usada no Console.WriteLine, mas você pode usar isso para outras coisas, como um sistema de Log por exemplo ou ainda em alguns objetos que sejam convertidos para string.

Suponhamos que você tenha um objeto CPF por exemplo, que tem dentro dele a lógica para validar e só permite a criação de instâncias com valores válidos.

Você pode implementar um método ToString nele que retorne uma string com os números do CPF, que pode ser usada com um cast ao invés de ter um método CPF.CPF.

O Equals é outro muito interessante e é relacionado a comparações.

Suponhamos que no seu sistema você tenha uma classe empresa por exemplo, e que você tenha vários objetos, você pode ter em seu domínio que nenhuma empresa compartilha o mesmo CNPJ, ou seja o CNPJ é um identificador único, agora suponhamos que você tenha uma comparação para verificar se uma Empresa está em uma lista por exemplo suponhamos que você queira usar o Método Find ou Contains de um objeto List, ele vai invocar o método Equals que irá fazer a comparação entre os objetos (empresas neste caso) e definir se são iguais.

O Equals retorna um boleano, true para igual e false para diferente, logo se ambos os objetos tiverem o mesmo CNPJ você pode definir que eles são a mesma "Empresa".

O GetHashCode é menos comum de usar, normalmente está associado a checagem de igualdade em coleções que usam hashs como base, por exemplo Hashtable ou Dictionary, que podem usar objetos como chaves (pense como uma lista, mas ao invés de indices númericos você pode usar strings, ou objetos complexos), neste caso internamente o Dictionary por exemplo usa o GetHashCode para obter uma chave a ser usada.

O GetType por fim é util para obter o tipo "classe" do objeto que se está manipulando, é util ao trabalhar com Reflections e Genéricos, onde você pode desejar ter determinados comportamentos para determinados tipos de forma dinâmica por exemplo.

Espero ter ajudado a esclarecer o funcionamento desses métodos.

Obrigado Rafael

Foi muito esclarecedor sua explicação.