Operadores de igualdade
Observação
Este conteúdo é reimpresso com permissão da Pearson Education, Inc. de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Essa edição foi publicada em 2008 e, desde então, o livro foi totalmente revisado na terceira edição. Algumas das informações nesta página podem estar desatualizadas.
Esta seção discute a sobrecarga de operadores de igualdade e refere-se a operator==
e operator!=
como operadores de igualdade.
❌ NÃO sobrecarregue um dos operadores de igualdade e não o outro.
✔️ FAÇA a verificação se Object.Equals e os operadores de igualdade têm exatamente a mesma semântica e características de desempenho semelhantes.
Isso geralmente significa que Object.Equals
precisa ser substituído quando os operadores de igualdade estiverem sobrecarregados.
❌ EVITE gerar exceções de operadores de igualdade.
Por exemplo, retorne false se um dos argumentos for nulo em vez de gerar NullReferenceException
.
Operadores de igualdade em tipos de valor
✔️ FAÇA a sobrecarga dos operadores de igualdade em tipos de valor, se a igualdade for significativa.
Na maioria das linguagens de programação, não há nenhuma implementação padrão de operator==
para tipos de valor.
Operadores de igualdade em tipos de referência
❌ EVITE sobrecarregar operadores de igualdade em tipos de referência mutáveis.
Muitas linguagens têm operadores de igualdade internos para tipos de referência. Os operadores internos geralmente implementam a igualdade de referência e muitos desenvolvedores ficam surpresos quando o comportamento padrão é alterado para a igualdade de valor.
Esse problema é mitigado para tipos de referência imutáveis porque a imutabilidade torna muito mais difícil observar a diferença entre igualdade de referência e igualdade de valor.
❌ EVITE sobrecarregar operadores de igualdade em tipos de referência se a implementação for significativamente mais lenta do que a da igualdade de referência.
Portions © 2005, 2009 Microsoft Corporation. Todos os direitos reservados.
Reimpresso com permissão da Pearson Education, Inc. das Diretrizes de Design do Framework: convenções, linguagens e padrões para bibliotecas do .NET reutilizável, 2ª edição por Krzysztof Cwalina e Brad Abrams, publicado em 22 de outubro de 2008 por Addison-Wesley Professional como parte da série de desenvolvimento do Microsoft Windows.