Minha pergunta é, como o C# reconhece que "m" é uma música da classe Musica?
Minha pergunta é, como o C# reconhece que "m" é uma música da classe Musica?
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!