String é imutável, ou seja, toda operação em cima de uma string, gera uma nova instância. Portanto devemos tomar cuidado ao fazer certo tipo de operações em cima de string. Listei as formas mais comuns de comparação de string e fiz um gráfico.

Código:

class Program
{
static void Main(string[] args)
{
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();

sw.Start();
for(int i=0;i<1000;i++) Program.comUpper("teste"); sw.Stop(); Console.WriteLine(sw.Elapsed.ToString()); sw.Reset(); sw.Start(); for (int i = 0; i < 1000; i++) Program.semUpper("teste"); sw.Stop(); Console.WriteLine(sw.Elapsed.ToString()); sw.Reset(); sw.Start(); for (int i = 0; i < 1000; i++) Program.comCompare("teste"); sw.Stop(); Console.WriteLine(sw.Elapsed.ToString()); Console.ReadKey(); } static void comUpper(string val) { if (val.ToUpper().Equals("teste")); } static void semUpper(string val) { if (val.Equals(val, StringComparison.OrdinalIgnoreCase)) ; } static void comCompare(string val) { if (String.Compare(val, "teste", true) == 0) ; } } [/sourcecode] Gráfico:

Usando Métodos de Extensão podemos criar um .EqualsIgnoreCase(string) =)

Anúncios