1
resposta

Somando os valores do array

Para esse caso, eu poderia ter usado qualquer tipo de loop para iterar sobre o array. Todavia, o foreach é o que mais traz legibilidade nesse tipo de situação, em que o índice não é necessário.

double[] doacoes = {51.10, 35.66, 500,12, 100, 712.59};
double totalDoacoes = 0;

foreach (var doacao in doacoes) {
    totalDoacoes += doacao;
}

Console.WriteLine($"O total em doações foi de: R${totalDoacoes.ToString("F2")}");
1 resposta

Olá, Diego. Como vai?

Sua análise sobre a legibilidade do código está totalmente correta! O laço foreach é a melhor escolha quando precisamos apenas percorrer todos os elementos de uma coleção do início ao fim, sem a necessidade de manipular, pular ou alterar os índices do array. Ele deixa o código limpo, expressivo e livre de erros clássicos de estouro de escopo (como o famoso IndexOutOfRangeException).

A sua implementação da lógica de acumulação (totalDoacoes += doacao) funcionou perfeitamente e a formatação da moeda usando o ToString("F2") para garantir duas casas decimais foi uma excelente prática de exibição.

Para agregar ainda mais valor aos seus estudos e expandir seu repertório em C#, gostaria de compartilhar duas alternativas excelentes para lidar com somatórios de arrays:

1. A Abordagem Moderna com LINQ (Apenas uma linha)
No dia a dia do desenvolvimento C#, é muito comum simplificarmos loops de somatórios utilizando o LINQ (System.Linq). Existe um método de extensão chamado Sum() feito exclusivamente para isso.

Com ele, você elimina a necessidade de criar a variável acumuladora e o laço foreach manualmente:

using System.Linq;

double[] doacoes = { 51.10, 35.66, 500.12, 100, 712.59 };

// O método Sum() faz todo o trabalho de iteração e soma por baixo dos panos
double totalDoacoes = doacoes.Sum();

Console.WriteLine($"O total em doações foi de: R${totalDoacoes.ToString("F2")}");

2. Quando o loop for tradicional ainda é vantajoso?
Como você bem mencionou, o foreach brilha quando o índice não é necessário. Mas vale a pena lembrar em quais cenários o for convencional (com a variável i) seria preferível:

  • Se você precisasse somar apenas os valores que estão em posições pares do array.
  • Se você precisasse interromper a soma ao atingir um determinado teto (ex: parar de somar após o total passar de R$ 1000,00 e descobrir em qual índice isso aconteceu).
  • Se você precisasse modificar o valor de algum elemento do array durante a leitura (o foreach cria uma variável de leitura que não permite alteração direta do item original).

(Apenas um pequeno detalhe de digitação no seu array original: o número 500,12 foi escrito com vírgula em vez de ponto 500.12. No C#, a vírgula serve para separar os elementos do array, então o compilador acabou interpretando como dois números separados: 500 e 12. Ajustando para o ponto decimal, o cálculo funcionará com precisão!).

Parabéns pelo raciocínio limpo e focado em legibilidade de código!

Espero que possa ter lhe ajudado!