c# confunda na comparação da string: o string.equals ()
método e o ==
o operador intercambiável?
Em C#, as comparações de string às vezes produzem resultados inesperados. Uma pergunta comum é se o método string.equals ()
e o ==
operador de sinal igual se comporta exatamente o mesmo.
considere o seguinte snippet de código:
string s = "Category";
TreeViewItem tvi = new TreeViewItem();
tvi.Header = "Category";
Console.WriteLine(s == tvi.Header); // false
Console.WriteLine(s.Equals(tvi.Header)); // true
Console.WriteLine(s == tvi.Header.ToString()); // true
S S e
tvi.header tvi.header
] tvi, o ==
operador Returns =
(]. Isso levanta a questão: por que esses dois métodos de comparação produzem resultados diferentes?
Diferenças -chave entre
string.equals ()
e
operadores: ]
Implementação específica do tipo: O operador
==
string.equals () é polimórfico, o que significa que sua implementação depende do tipo de tempo de execução do objeto comparado.
Processamento de valor null:
nullReferexception
será Thrown.
Para ilustrar essas diferenças, considere o seguinte código:
objeto x = new StringBuilder ("hello"). tostring ();
objeto y = new StringBuilder ("Hello"). ToString ();
if (x.equals (y)) // true
if (x == y) // false
e y y
] yoperador retorna
falseobject x = new StringBuilder("hello").ToString();
object y = new StringBuilder("hello").ToString();
if (x.Equals(y)) // True
if (x == y) // False
).
string xs = (string) x;
string ys = (string) y;
if (xs == ys) // true
para concluir
enquanto
string.equals () e
==
string.equals () geralmente é recomendado, especialmente ao comparar diferentes tipos de objetos ou lidar com referências vazias.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3