Olá, Marcos! Como vai?
Isso ocorre porque, em C#, você não pode executar código diretamente dentro do escopo de uma classe, exceto em métodos, construtores, ou inicializadores de campo.
Quando você declara uma classe, como a Produto, você está apenas definindo um tipo de dado, e não pode executar instruções de controle de fluxo como for fora de um método ou bloco de inicialização. O código que manipula dados, como percorrer uma coleção com um for, deve estar dentro de um método. Por exemplo, você poderia ter algo assim:
public class Produto
{
public string Nome { get; set; }
public decimal Preco { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
List<Produto> produtos = new List<Produto>
{
new Produto { Nome = "Produto1", Preco = 10.0m },
new Produto { Nome = "Produto2", Preco = 20.0m }
};
for (int i = 0; i < produtos.Count; i++)
{
Console.WriteLine(produtos[i].Nome);
}
}
}
No exemplo acima, a instrução for está dentro do método Main, que é um ponto de entrada válido para executar o código.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.