Resultado da listagem Tem diferença! :) Mas como chegamos nisto? 1. Preparando listas para comparação Foram três. Todas com 32.767 registos. Uma totalmente sem repetições e com números sequenciais. Uma com poucas repetições (garantidas com números randômicos variando entre 1 e 32.767 / 2 :) e Uma com muitas repetições (também randômicos, entre 1 e 32.767 / 5) 2. Percorrendo e populando as novas listas Como a classe List não implementa validação de repetição, optamos por escolher o método mais usado (e aconselhável, principalmente onde trabalho :) que é o método Contains. if (!list.Contains(listaSemRepeticao[i])) list.Add(listaSemRepeticao[i]); E na HashSet , inserção direta (porque ela já implementa a verificação de repetição). hash.Add(listaSemRepeticao[i]); E só! 3. Visualizando os resultados. Presentes na imagem acima. 4. Curiosidades Interessante notar que, maior número de repetições, melhor o desempenho para a
Vamos direto ao ponto: a melhor maneira de aprender a usar uma nova funcionalidade de sua linguagem de programação favorita é identificá-la em um uso do dia a dia. Vamos então utilizar um problema, identificar a situação ao qual o delegate seria útil e vamos mostrar o uso para melhorar a qualidade do seu código. Existe um algorítimo que todo aspirante a programador tem que aprender para firmar o conhecimento no uso de iterações que é o algorítimo do Fatorial. Basicamente, o objetivo é descobrir qual seria o fatorial do número 3, por exemplo, Fat3 = 3 * 2 * 1 = 6. Uma das formas de desenvolver isto no C#, em uma Console Application , é fazer um laço decremental sempre multiplicando o valor resultante pelo número que está no laço. Por exemplo: Mas existe uma outra forma também, que seria fazer um algorítimo recursivo. Mais ou menos como abaixo. O resultado neste caso não muda. O problema é se quisermos mostrar os dois resultados juntos. Olha como ficaria o no