O C# nos dá 2 opções de estruturas para repetição controlada por contagem, isto é, a repetição ocorre de um ponto inicial até um ponto final definido antes de as iterações acontecerem, que são o for e o foreach.
A diferença entre as duas é bastante simples: o for executa iterações de acordo com um contador e, a cada iteração, altera este contador, enquanto o foreach executa iterações de acordo com a quantidade de objetos em uma coleção.
O for tem a seguinte sintaxe: "for (<tipo> <variável> = <valor inicial>; <condição para executar>; <ação para cada iteração>)". Assim, podemos concluir que foi usada uma variável inteira i, iniciada em 0, que aumenta em 1 a cada iteração (i++) e o for é executado enquanto i for menor ou igual a 10. Bastante semelhante ao while, neste caso o resultado são 11 linhas com os números de 0 a 10.
O foreach utiliza uma coleção qualquer, que pode ser um array (como neste caso), uma list ou uma collection. Ele conta automaticamente quantos objetos existem e faz uma iteração por cada, segundo a sintaxe: "foreach (<tipo> <variável> in <coleção>)". Note que não é necessário usar um contador ou uma condição, e o tipo DEVE ser igual ao dos objetos na coleção. O resultado neste caso é semelhante ao exemplo do for acima.
Também é possível usar uma coleção com um for, mas é recomendável utilizar o foreach, que é mais seguro e simples:
Porém, repare que, como o primeiro item de uma coleção é o de index 0, temos de executar o for enquanto o contador for menor ou igual o comprimento menos 1. Este for é exatamente igual ao exemplo do foreach.
É possível fazer usos criativos do for. Você pode, por exemplo, ler arquivos em uma lista e, caso haja um erro, repetir o mesmo arquivo novamente: é possível alterar o contador DURANTE a iteração, assim basta você usar uma estrutura try-catch, diminuir o contador (i--) quando houver um erro e ler a mesma posição da lista novamente! Isso elimina a necessidade de um novo bloco de repetição apenas para tentar ler o arquivo novamente, como no caso do Delphi, que necessitaria de um repeat dentro do for.
Há muitos tipos de coleções. Além do array básico, existem arrays multidimensionais (e sim, é possível usar um for dentro de outro!), há listas especializadas e coleções de objetos de diferentes tipos, basta explorar a IDE.
info
Grupo: Lenda
Registrado: 03/10/06
Posts: 2.6k
Reputação: +309
Gênero: Masculino
Char no Tibia: Knight Orion
Repetição controlada por contagem
O C# nos dá 2 opções de estruturas para repetição controlada por contagem, isto é, a repetição ocorre de um ponto inicial até um ponto final definido antes de as iterações acontecerem, que são o for e o foreach.
A diferença entre as duas é bastante simples: o for executa iterações de acordo com um contador e, a cada iteração, altera este contador, enquanto o foreach executa iterações de acordo com a quantidade de objetos em uma coleção.
For
http://pastebin.com/XFKkh0nY
O for tem a seguinte sintaxe: "for (<tipo> <variável> = <valor inicial>; <condição para executar>; <ação para cada iteração>)". Assim, podemos concluir que foi usada uma variável inteira i, iniciada em 0, que aumenta em 1 a cada iteração (i++) e o for é executado enquanto i for menor ou igual a 10. Bastante semelhante ao while, neste caso o resultado são 11 linhas com os números de 0 a 10.
Foreach
http://pastebin.com/wjhb0A1S
O foreach utiliza uma coleção qualquer, que pode ser um array (como neste caso), uma list ou uma collection. Ele conta automaticamente quantos objetos existem e faz uma iteração por cada, segundo a sintaxe: "foreach (<tipo> <variável> in <coleção>)". Note que não é necessário usar um contador ou uma condição, e o tipo DEVE ser igual ao dos objetos na coleção. O resultado neste caso é semelhante ao exemplo do for acima.
Também é possível usar uma coleção com um for, mas é recomendável utilizar o foreach, que é mais seguro e simples:
http://pastebin.com/tKwd6tap
Porém, repare que, como o primeiro item de uma coleção é o de index 0, temos de executar o for enquanto o contador for menor ou igual o comprimento menos 1. Este for é exatamente igual ao exemplo do foreach.
É possível fazer usos criativos do for. Você pode, por exemplo, ler arquivos em uma lista e, caso haja um erro, repetir o mesmo arquivo novamente: é possível alterar o contador DURANTE a iteração, assim basta você usar uma estrutura try-catch, diminuir o contador (i--) quando houver um erro e ler a mesma posição da lista novamente! Isso elimina a necessidade de um novo bloco de repetição apenas para tentar ler o arquivo novamente, como no caso do Delphi, que necessitaria de um repeat dentro do for.
Há muitos tipos de coleções. Além do array básico, existem arrays multidimensionais (e sim, é possível usar um for dentro de outro!), há listas especializadas e coleções de objetos de diferentes tipos, basta explorar a IDE.