Eu estava lendo sobre as melhores práticas para comparar strings e vi estes dois pontos:
- Use os métodos String.Compare e String.CompareTo para classificar strings, não para verificar igualdade.
- Não use uma sobrecarga do método String.Compare ou CompareTo e teste um valor de retorno zero para determinar se duas strings são iguais.
Infelizmente, não há nenhuma explicação sobre o motivo pelo qual isso não é recomendado.
Alguém pode explicar por que é ruim usar CompareTo()
para verificar igualdade?
Se você olhar a documentação,
CompareTo
ela fornece um exemplo de uma comparação que retorna0
para duas strings que devem ser classificadas igualmente, mas não são iguais. Se modificarmos o exemplo ligeiramente:Resultado:
Claro, a outra razão para evitá-los é que usar
Equals
mais claramente codifica sua intenção se você estiver tentando testar a igualdade.