2
respostas

[Dúvida] Como o sistema difere as duas variaveis "Nome" dentro de ExibirMusicasDoAlbum( ) ?

Fiquei com uma duvida nesse trecho de código:

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

Como ele difere que o primeiro "Nome" é a propriedade da classe Album e o segundo "Nome" é da lista do tipo Musica?

2 respostas

Oii, Marconi!

O sistema diferencia as duas variáveis "Nome" com base no contexto em que cada uma é usada.

  1. Nome do álbum: Quando você usa {Nome} dentro do método ExibirMusicasDoAlbum(), o compilador entende que você está se referindo à propriedade Nome da classe Album. Isso acontece porque ExibirMusicasDoAlbum() é um método da classe Album, e, portanto, o compilador procura por uma propriedade Nome dentro da própria classe.

  2. Nome da música: Já quando você usa musica.Nome dentro do foreach, o compilador entende que você está se referindo à propriedade Nome da instância de Musica que está sendo iterada. Isso ocorre porque musica é uma variável que representa cada item dentro da coleção musicas, que presumivelmente é uma lista de objetos do tipo Musica.

Para exemplificar, imagine que sua classe Album tem uma propriedade Nome que guarda o nome do álbum, e cada objeto Musica dentro da lista musicas também tem uma propriedade Nome que guarda o nome da música. O compilador consegue diferenciar essas propriedades pelo contexto em que cada uma é acessada.

Espero ter ajudado.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Boa tarde! No trecho Console.WriteLine($"Lista de músicas do álbum {Nome}:\n");, o Nome se refere à propriedade da própria classe Album, pois está sendo usado dentro de um método da mesma classe.

Já no trecho Console.WriteLine($"Música: {musica.Nome}");, o musica.Nome acessa a propriedade Nome da classe Musica, pois musica é uma variável do tipo Musica dentro do foreach.

Ou seja: • Nome → é o nome do álbum. • musica.Nome → é o nome de cada música da lista.

Ambos têm propriedades chamadas Nome, mas pertencem a classes diferentes (Album e Musica) e são usados em contextos diferentes.