1
resposta

[Bug] Apenas uma unidade de compilação pode ter instruções de nivel superior

Estava desenvolvendo a aplicação junto com as video aulas quando fiquei preso nesse erro. Apenas uma unidade de compilação pode ter instruções de nível superior. Ao utilizar a função de executar a ultima compilação bem sucedida tudo ocorre normalmente, mas quero corrigir para saber oq esta errado no código. Quem poder ajudar desde já agradeço muito.

Código completo:

//Screen Sound

string mensagemBoasVindas = "Boas vindas ao Screen Sound!"; List bandas = new List {"Costa Gold", "The Beatles", "Haikaiss", "Recayd Mob"}; void ExibirLogo() { Console.WriteLine(@" ░██████╗░█████╗░██████╗░███████╗███████╗███╗░░██╗  ░██████╗░█████╗░██╗░░░██╗███╗░░██╗██████╗░ ██╔════╝██╔══██╗██╔══██╗██╔════╝██╔════╝████╗░██║  ██╔════╝██╔══██╗██║░░░██║████╗░██║██╔══██╗ ╚█████╗░██║░░╚═╝██████╔╝█████╗░░█████╗░░██╔██╗██║  ╚█████╗░██║░░██║██║░░░██║██╔██╗██║██║░░██║ ░╚═══██╗██║░░██╗██╔══██╗██╔══╝░░██╔══╝░░██║╚████║  ░╚═══██╗██║░░██║██║░░░██║██║╚████║██║░░██║ ██████╔╝╚█████╔╝██║░░██║███████╗███████╗██║░╚███║  ██████╔╝╚█████╔╝╚██████╔╝██║░╚███║██████╔╝ ╚═════╝░░╚════╝░╚═╝░░╚═╝╚══════╝╚══════╝╚═╝░░╚══╝  ╚═════╝░░╚════╝░░╚═════╝░╚═╝░░╚══╝╚═════╝░ "); Console.WriteLine(mensagemBoasVindas);}

void ExibirOpcoesMenu() { ExibirLogo();

Console.WriteLine("\nDigite 1 para registrar uma banda");
Console.WriteLine("Digite 2 para mostrar todas as bandas");
Console.WriteLine("Digite 3 para avaliar uma banda");
Console.WriteLine("Digite 4 para exibir a média de uma banda");
Console.WriteLine("Digite -1 para sair");

Console.Write("\nDigite sua opção: ");
string opcaoEscolhida = Console.ReadLine()!;
int opcaoEscolhidaNumerica = int.Parse(opcaoEscolhida);

switch (opcaoEscolhidaNumerica)
{
    case 1: RegistrarBandas();
        break;
    case 2: MostrarBandasRegistradas();
        break;
    case 3:Console.WriteLine("Você escolheu a opção: " + opcaoEscolhidaNumerica);
        break;
    case 4:Console.WriteLine("Você escolheu a opção: " + opcaoEscolhidaNumerica);
        break;
    case -1:Console.WriteLine("Você escolheu a opção: " + opcaoEscolhidaNumerica);
        break;
    default: Console.WriteLine("Tchau tchau :)");
        break;

}

}

void RegistrarBandas() { Console.Clear(); Console.WriteLine("*******************"); Console.WriteLine("Registro de Bandas"); Console.WriteLine("*******************\n"); Console.Write("Digite o nome da banda que deseja registrar:"); string nomeBanda = Console.ReadLine()!; bandas.Add(nomeBanda); Console.WriteLine($"A banda {nomeBanda} foi registrada com sucesso!"); Thread.Sleep(2000); Console.Clear();

ExibirOpcoesMenu();

} void MostrarBandasRegistradas() { Console.Clear(); Console.WriteLine("*******************"); Console.WriteLine("Bandas Registradas:"); Console.WriteLine("*******************\n");

/* for (int i = 0; i < bandas.Count; i++) { Console.WriteLine($"Banda: {bandas[i]}"); }*/

foreach (string banda in bandas)
{
    Console.WriteLine($"Banda: {banda}");
}

Console.WriteLine("\nPressione qualquer tecla para voltar");
Console.ReadKey();
Console.Clear();
ExibirOpcoesMenu();

}

ExibirOpcoesMenu();

1 resposta

Então, "instruções de nível superior" em C# se refere àquele arquivo sem classe onde você deve estar escrevendo o código do seu programa.

O C# precisa de um "ponto de entrada" para executar o código. Usando "instruções de nível superior" é esse arquivo. Se você duplicar esse arquivo, o campilador não vai saber qual ele deve executar, pois ambos podem servir de "ponto de entrada".

Se você optar por não usar "instruções de nível superior", o que eu prefiro. O ponto de entrada, por padrão, vai ser:

    internal class Program
    {
        static void Main(string[] args)
        {
            //Ponto de entrada
        }
    }