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

Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object

Olá.

Estou tendo um problema, estaá dando uma exception:

Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.

Musica.cs

class Musica
{
    public string Nome { get; set; }
    public string Artista { get; set; }
    public int Duracao { get; set; }
    public bool Disponivel { get; set; }
    public string DescricaoResumida => $"A música {Nome} pertence à {Artista}";

    public void ExibirFichaTecnica()
    {
        Console.WriteLine($"Nome: {Nome}");
        Console.WriteLine($"Artista: {Artista}");
        Console.WriteLine($"Duração: {Duracao}");

        if (Disponivel)
        {
            Console.WriteLine("Disponível no plano.");
        }
        else
        {
            Console.WriteLine("Adquira o plano Plus+");
        }
    }
}

Album.cs


class Album
{
    
    private List<Musica> musicas;
    
    public string Nome { get; set; }
    
    public int DuracaoTotal { get; set; }
    
    public void AdicionarMusica(Musica musica)
    {
        musicas.Add(musica);
    }

    public void ExibirMusicasDoAlbum()
    {
        Console.WriteLine($"Lista de músicas do álbum {Nome}:\n");
        foreach (var musica in musicas)
        {
            Console.WriteLine($"Música: {musica.Nome}");
        }
    }
}

Program.cs

Musica musica1 = new Musica();
musica1.Nome = "All Too Well";
musica1.Artista = "Taylor Swift";

Musica musica2 = new Musica();
musica2.Nome = "Begin Again";
musica2.Artista = "Taylor Swift";

Album albumDaTaylor = new Album();
albumDaTaylor.Nome = "Red";

albumDaTaylor.AdicionarMusica(musica1);
albumDaTaylor.AdicionarMusica(musica2);

Poderiam me dizer oque pode estar causando a exception?

2 respostas
solução!

Olá, tudo bem? O que esta gerando a exceção é a classe de álbum no método de 'AdicionarMusica' a sua lista de musicas ainda não foi instanciada por isso está gerando a exceção. Criando uma instancia da sua lista de musicas resolve a exceção.

class Album
{

    private List<Musica> musicas = new List<Musica>();

    public string Nome { get; set; }

    public int DuracaoTotal { get; set; }

    public void AdicionarMusica(Musica musica)
    {
        musicas.Add(musica);
    }

    public void ExibirMusicasDoAlbum()
    {
        Console.WriteLine($"Lista de músicas do álbum {Nome}:\n");
        foreach (var musica in musicas)
        {
            Console.WriteLine($"Música: {musica.Nome}");
        }
    }
}

Nossa, que vacilo. Não percebi isso. Agradeço a ajuda, Lucas :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software