2
respostas

Quando eu coloco para registrar banda aparece "System.Action"

string mensagemDeBoasVindas = "Boas vindas ao Screen Sound";

void ExibirMensagemDeBoasVindas() { Console.WriteLine(@" ██████ █████ ██████ ███████ ███████ ███ ██   █████ █████ ██ ██ ███ ██ ██████ ██ ██ ██ ██ ██ ██ ██ ████ ██   ██ ██ ██ ██ ██ ████ ██ ██ ██ █████ ██ ██████ █████ █████ ██ ██ ██    █████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████    ██ ██ ██ ██ ██ ██ ████ ██ ██ ██████ █████ ██ ██ ███████ ███████ ██ ███   ██████ █████ ██████ ██ ███ ██████"); Console.WriteLine(); Console.WriteLine(mensagemDeBoasVindas);

}

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

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

switch (opcaoEscolhidaNumerica)
{
    case 1:
        Console.WriteLine(RegistrarBanda);
        break;
    case 2:
        Console.WriteLine("Você escolheu a opção" + opcaoEscolhidaNumerica);
        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("Tchau tchau");
        break;
    default:
        Console.WriteLine("Opção Inválida");
        break;
}

}

void RegistrarBanda() { Console.Clear(); Console.WriteLine("Registro de bandas"); Console.Write("Digite o nome da banda que deseja registrar: "); string nomeDaBanda = Console.ReadLine()!; Console.WriteLine($"A banda {nomeDaBanda} foi registrada com sucesso"); Thread.Sleep(2000); Console.Clear(); ExibirOpcoesDoMenu();

}

ExibirMensagemDeBoasVindas(); ExibirOpcoesDoMenu();

2 respostas

Oi Vinícius,

O problema ocorre porque você está imprimindo a referência do método RegistrarBanda em vez de executá-lo. Quando você usa Console.WriteLine(RegistrarBanda);, o C# entende que você quer exibir informações sobre o método, e não rodar o código dentro dele. Por isso aparece "System.Action". 🤔

Para corrigir, você precisa chamar o método RegistrarBanda usando parênteses: RegistrarBanda();. Assim, o código dentro do método será executado. 👍

Seu código corrigido ficaria assim:

switch (opcaoEscolhidaNumerica)
{
    case 1:
        RegistrarBanda();
        break;
    // ... restante do código ...
}

Para saber mais: Métodos em C#. Este link da documentação oficial da Microsoft explica como declarar, chamar e usar métodos em C#.

Continue praticando e explorando o mundo da programação! 💪

Oi Vinícius! Bom dia, contibuindo com o post.

Pelo que você descreveu, parece que o problema está na forma como a função RegistrarBanda está sendo chamada no seu código. No case 1 do seu switch, você está usando Console.WriteLine(RegistrarBanda);, o que está tentando imprimir a representação da função RegistrarBanda em vez de executá-la.

Para corrigir isso, você deve chamar a função RegistrarBanda() diretamente, sem o Console.WriteLine. Aqui está como você pode ajustar o case 1:

case 1:
    RegistrarBanda();
    break;

Isso deve resolver o problema de "System.Action" aparecendo, pois agora a função será executada corretamente quando a opção 1 for escolhida.

Espero ter ajudado e bons estudos!