C# -  Fundamentos : Diferença entre Equals e ==


 Na série C# Fundamentos vou abordar os conceitos básicos da linguagem C#. Hoje veremos qual a diferença entre Equals e ==.

Usar o método Equals() ou o operador == ?

 

     a.Equals(b) ou a == b ?

 

Os tipos de dados no .Net Framework podem ser classificados de acordo com o fato de uma variável de um tipo específico armazenar seus próprios dados ou um ponteiro para os dados.

Se a variável armazena seus próprios dados, é um tipo por valor e se ela contém um ponteiro para dados em outro lugar na memória, é um tipo de referência.

Você pode atribuir um tipo de referência ou um tipo por valor a uma variável do tipo de dados Object.

O método Equals() e operador == são usados ​​para comparar valores em variáveis por tipo e por referência e retornam o valor booleano (true/false).

Comparando tipos por valor

Para tipos por valor tanto o operador == como o método Equals() atuam da mesma forma; ambos comparam os dois objetos por valor:

Ambos retornam true pois neste caso ambos comparam o objeto pelo valor.

Comparando tipos por referência

Para tipos por referência o método Equals() opera de forma diferente do operador == .

Aqui temos que os objetos possuem o mesmo conteúdo mas elas apontam para instâncias diferentes. Assim == retorna false e Equals() retorna true.

Enquanto o operador == compara retornos de referência true quando ambas as referências apontam para o mesmo objeto, Equals() compara o objeto por valor e retornará true se as referências apontarem para objetos que são equivalentes.

Resumindo:

Veja este exemplo:

Neste código temos que o conteúdo e as referências de o e o1 são os mesmos. Logo o valor de ambos será true.

E estamos conversados...

"Deus nunca foi visto por alguém. O Filho unigênito (Jesus), que está no seio do Pai, esse o revelou."
João 1:18

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti