Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Não entendi como funciona o GET e SET, exercicio 3 classe Carro

class Carro
{
    public double Acelerar { get; set; }
    public double Frear {  get; set; }
    public string Modelo { get; set; }
    public int Ano 
    {
        get; 
        set
        {
            if (Ano >= 1960 && Ano <= 2023)
            {
                 Ano = this.Ano;
            }
            else
            {
                Console.WriteLine("Ano errado");
                
            }
        }
    }
    public string Marca { get; set; }

    public string DescricaoDetalheda => $"Marca {Marca}\n Modelo {Modelo}\n Ano{Ano}";
    





    public double Acelerando(double numDaAceleracao, int tempoDeAceleracao)
    {
        
        

        for (int i = 0; i < tempoDeAceleracao; i++)
        {
            numDaAceleracao *= 2;
            Console.WriteLine($"Acelerando {numDaAceleracao}");
        }

        return numDaAceleracao;

        
    }

    public void Freando(double aceleracaoAtual, int tempoDeFrear)
    {
        for(int i = 0; i < tempoDeFrear; i++)
        {
            aceleracaoAtual *= 0.5;
            Console.WriteLine($"Freando {aceleracaoAtual}");

            if (aceleracaoAtual <= 0)
            {
                break;
            }
        }

    }

    public void Buzina()
    {
        Console.WriteLine("BI BI");
    }


}

Como devo escrever esse set e get ?
Estou recebendo no Console isso ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade ) )

e no código bem eim baixo do Ano fica vermelho, recebendo o seguinte erro ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

1 resposta
solução!

Olá Samuel! Tudo bem?

Pelo que analisei, parece que está ocorrendo um problema de recursão infinita no set da propriedade Ano. Isso acontece porque você está tentando atribuir Ano a this.Ano, o que causa um loop sem fim.

Aqui está como você pode corrigir isso:

class Carro
{
    private int ano;
    
    public double Acelerar { get; set; }
    public double Frear { get; set; }
    public string Modelo { get; set; }
    public string Marca { get; set; }

    public int Ano
    {
        get { return ano; }
        set
        {
            if (value >= 1960 && value <= 2023)
            {
                ano = value;
            }
            else
            {
                Console.WriteLine("Ano errado");
            }
        }
    }

    public string DescricaoDetalheda => $"Marca {Marca}\nModelo {Modelo}\nAno {Ano}";

    public double Acelerando(double numDaAceleracao, int tempoDeAceleracao)
    {
        for (int i = 0; i < tempoDeAceleracao; i++)
        {
            numDaAceleracao *= 2;
            Console.WriteLine($"Acelerando {numDaAceleracao}");
        }
        return numDaAceleracao;
    }

    public void Freando(double aceleracaoAtual, int tempoDeFrear)
    {
        for (int i = 0; i < tempoDeFrear; i++)
        {
            aceleracaoAtual *= 0.5;
            Console.WriteLine($"Freando {aceleracaoAtual}");

            if (aceleracaoAtual <= 0)
            {
                break;
            }
        }
    }

    public void Buzina()
    {
        Console.WriteLine("BI BI");
    }
}

A mudança principal foi a introdução de um campo privado ano para armazenar o valor real da propriedade Ano. O set agora usa value para verificar e atribuir o valor.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.