Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

[Dúvida] Uso do Parse dentro de um método estático.

Olá pessoas!

Nesse código, pelo o que eu entendi, está sendo criado um tipo "Avaliacao" que irá retornar o valor convertido de int para string. Como é mostrano curso "C#: Dominando Orientação a Objetos", só que ao eu finalizar o trecho do "Parse" no program.cs fica com um cerrilhado vermelhor informando que o meu método construtor "Parse" não está sentro encontrado no meu tipo "Avaliacao". Segue o código e o print.

void AvaliarUmaBanda()
{
    //digite qual banda deseja avaliar
    // se a banda exitir no dicionario >> atribuir uma nota
    // senão, volta ao menu principal

    Console.Clear();
    ExibirTituloDaOpcao("Avaliar banda");
    Console.Write("Digite o nome da banda que deseja avaliar: ");
    string nomeDaBanda = Console.ReadLine()!;
    if (bandasRegistradas.ContainsKey(nomeDaBanda))
    {
        Banda banda = bandasRegistradas[nomeDaBanda];
        Console.Write($"Qual a nota que a banda {nomeDaBanda} merece: ");
        Avaliacao nota = new Avaliacao.Parse(Console.ReadLine()!);  // TRECHO DANDO ERRO
        banda.AdicionarNota(nota);
        Console.WriteLine($"\nA nota {nota} foi registrada com sucesso para a banda {nomeDaBanda}");
        Thread.Sleep(2000);
        Console.Clear();
        ExibirOpcoesDoMenu();
    }
    else
    {
        Console.WriteLine($"\nA banda {nomeDaBanda} não foi encontrada!");
        Console.WriteLine("Digite uma tecla para voltar ao menu principal");
        Console.ReadKey();
        Console.Clear();
        ExibirOpcoesDoMenu();
    }

}

Classe Avaliação

namespace ScreenSound.Modelos;

internal class Avaliacao
{
    public Avaliacao(int nota)
    {
        Nota = nota;
    }

    public int Nota { get; } 

    public static Avaliacao Parse (string texto)
    {
        int nota = int.Parse(texto);
        return new Avaliacao(nota);

    }

}

Quando eu clico na solução sugerida pelo Visual Studio ele sugere que eu faça a seguinte linha de código na minha classe Avaliação:

    internal class Parse : Avaliacao
    {
        private string v;

        public Parse(string v)
        {
            this.v = v;
        }
    }
    

![](ERRO NA COMPILAÇÃO )

6 respostas

Rhyann,

Acredito que pelo fato de ser "static" você NÃO pode escrever o "new", pois NÃO é preciso criar uma instância (veja o link abaixo). Por favor, experimente desta forma:

Avaliacao nota = Avaliacao.Parse(Console.ReadLine()!);

===============================================================

Operador new – o operador new cria uma instância de um tipo

https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/operators/new-operator

===============================================================

Mas juro que nunca vi isso em nenhum código que prestei manutenção.

Agora as divertidas brincadeiras... só para testar:

1º - Criei um CTOR (construtor) vazio, veja o código completo:

internal class Avaliacao
{
    public int Nota { get; }

    public Avaliacao()
    {
            
    }

    public Avaliacao(int nota)
    {
        Nota = nota;
    }

    public static Avaliacao Parse(string texto)
    {
        int nota = int.Parse(texto);
        return new Avaliacao(nota);
    }
}

2º - Criei uma variante "1" só para testes da função "AvaliarUmaBanda1".

static void AvaliarUmaBanda1()
{
    Console.WriteLine("Escreva um Número:");

    // ERRO:
    //Avaliacao nota = new Avaliacao().Parse(Console.ReadLine()!);

    // FUNCIONA!
    //Avaliacao nota = Avaliacao.Parse(Console.ReadLine()!);

    // ALTERNATIVA:
    Avaliacao nota = new();
    nota = Avaliacao.Parse(Console.ReadLine()!);

    Console.WriteLine($"Esta é a nota: {nota.Nota}");
    Console.ReadKey();
}

Interessante como você pode declarar e depois atribuir.

Se quiser estudar mais o "Parse" e o "TryParse", segue um vídeo:

===============================================================

Parse e TryParse no C#

https://balta.io/blog/csharp-parse-tryparse

===============================================================

Por favor, se a sua dúvida foi sanada, não esqueça de encerrar o tópico.

E se eu te ajudei, não esqueça de me pontuar... medalha... medalha... medalha...

[]'s,

Fabio I.

Qual o intuito desse trecho de código?

    public Avaliacao()
    {
            
    }

Bom dia Rhyan, tudo bom?

Essa é a definição do contrutor da classe, que está sendo feita de maneira explicita na classe. Um construtor é o método que é utilizado na contrução do objeto na memória do computador.

Espero te ajudado.

solução!

Rhyann,

Botando pilha no que o André escreveu...

Use a palavra "CTOR" (code snipper) e digite duas vezes a tecla 'TAB'.

Vai montar um construtor desta classe para você colocar o que quiser dentro.

Por favor, leia o conteúdo dos links abaixo, eu adoro o José Carlos Macoratti:

=======================================

C# code snippets

Article - 03/09/2023

https://learn.microsoft.com/en-us/visualstudio/ide/visual-csharp-code-snippets?view=vs-2022

=======================================

Construtores (guia de programação em C#)

Artigo - 06/04/2023

https://learn.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/constructors

=======================================

C# E ORIENTAÇÃO A OBJETOS > CONSTRUTORES

https://www.alura.com.br/apostila-csharp-orientacao-objetos/construtores?gclid=CjwKCAjwqZSlBhBwEiwAfoZUIGwDc7TgQSja0yC3pZ7tOatlLeB2nMKo30wnJLPbU_qQWcKhYs5-2BoCwUwQAvD_BwE

=======================================

C# - Conceitos : Construtor (revisitado) - I

Os construtores são tipos especiais de métodos usados ​​para criar e inicializar objetos. É através deste tipo especial de método, chamado de construtor, que você cria instâncias de uma classe.

https://www.macoratti.net/18/09/c_constr1.htm

=======================================

E não se esqueça de fechar o tópico caso sua dúvida tenha sido solucionada e se você me pontuar eu ficarei ainda mais feliz.

[]'s,

Fabio I.

Entendi. Mas qual o intuito de um construtor vazio?

Rhyann,

É permitir que NÃO seja obrigatórias as passagens de parâmetros dos outros construtores.

Veja também:

=======================================

Construtor vazio

Publicado 7 anos atrás, em 07/11/2016

https://cursos.alura.com.br/forum/topico-construtor-vazio-26704

=======================================

Como funciona um construtor vazio em C#?

https://pt.quora.com/Como-funciona-um-construtor-vazio-em-C

=======================================

Claro que o construtor vazio sozinho sem outros construtores não tem função, pois isso a função já faz.

[]'s,

Fabio I.