2
respostas

[Dúvida] Letra m

Minha pergunta é, como o C# reconhece que "m" é uma música da classe Musica?

2 respostas

No exemplo ele está usando musicas.Sum(), nesse caso o C# usa da inferência de tipos para deduzir que o que ele espera dentro de Sum, na arrow function, seja um valor do tipo List. E aí você pode usar o nome que você quiser ali que será dessa tipagem. Acho que os professores erraram em não colocar um nome melhor ou se aprofundar mais no assunto.

Olá, Filipe! tudo bom?

Complementando a resposta do colega @Felipe Poletti Garcia

A sua dúvida é bem interessante e pode estar relacionada ao uso do foreach no C#. Quando você vê a variável m no contexto do Sum() ou musica no foreach, essas são variáveis de iteração que representam cada elemento da coleção que está sendo percorrida.

No caso do foreach (var musica in musicas), a variável musica é uma instância da classe Musica porque a coleção musicas é do tipo que contém objetos da classe Musica. Assim, o C# entende que musica é uma instância de Musica e, portanto, você pode acessar suas propriedades, como Nome ou Duracao.

Da mesma forma, no método Sum(m => m.Duracao), m representa cada elemento da coleção musicas durante a soma. Como musicas é uma lista de objetos Musica, m é tratado como um objeto Musica, permitindo o acesso à propriedade Duracao.

Espero ter ajudado e bons estudos!