Qual é a diferença entre InvariantCulture e Ordinal ao comparar strings em C#?
Olá a todos! Sou um desenvolvedor C# iniciante e me deparei com um problema de comparação de strings. Na documentação da Microsoft, vejo frequentemente dois métodos: `String.Compare` com `StringComparison.InvariantCulture` e `StringComparison.Ordinal`. Mas não entendo completamente qual é a diferença entre eles e quando usar cada um.
Por exemplo, tenho este código:
```csharp
string str1 = "Straße";
string str2 = "STRASSE";
bool result1 = string.Equals(str1, str2, StringComparison.InvariantCultureIgnoreCase);
bool result2 = string.Equals(str1, str2, StringComparison.OrdinalIgnoreCase);
Console.WriteLine($"InvariantCulture: {result1}"); // True
Console.WriteLine($"Ordinal: {result2}"); // False
```
Por que ao usar `InvariantCulture` as strings são consideradas iguais, mas com `Ordinal` não? Afinal, são strings diferentes! E mais: se estou apenas comparando logins de usuários ou nomes de arquivos, qual opção devo escolher? Ouvi dizer que `Ordinal` é mais rápido, mas tenho medo de errar e obter bugs com diferentes
No answers yet.
Faça login para deixar uma resposta
Blogs
Implantação de Swift no Kubernetes: guia básico para desenvolvedores
Trabalhando com datas e horas em TypeScript: do A ao Z
Como acelerar o aprendizado de Rust: dicas de desenvolvedores seniores
Onde aprender Python: melhores cursos, escolas e canais para iniciantes