Em um dos desafios de OO em C# é solicitado para criar uma classe filme e artista. Para todo filme criado, é necessário informar o título, duração e os artistas que fazem parte.
Inicialmente a lista de artistas era apenas uma lista de strings, como no exemplo abaixo:
Filme filme = new Filme("Um sonho de liberdade", 142, new List() {"Tim Robbins", "Morgan Freeman" });
Porém, ao alterar a lista para o tipo "Artista', me surgiu a dúvida em como criar esse objeto no construtor. Criar a lista vazia ou como nula não gera erros, mas não compreendi como já instanciar o objeto direto no contrutor, como por exemplo, "Filme filme1 = new("Django", 200, new List());"
Segue o código da classe Filme e Artista que estou usando:
class Filme
{
public Filme(string titulo, int duracao, List<Artista> elenco)
{
this.Titulo = titulo;
this.Duracao = duracao;
if(elenco == null)
Elenco = new();
else
{
Elenco = elenco;
foreach(var ator in elenco)
ator.AdicionarFilmes(this);
}
}
public string Titulo {get;set;}
public int Duracao { get; set; }
public List<Artista> Elenco { get; set; }
}
class Artista
{
public Artista(string nome, int idade)
{
this.Nome = nome;
this.Idade = idade;
}
public string Nome { get; set; }
public int Idade { get; set; }
public List<Filme> FilmesAtuados { get; set; }
public void AdicionarFilmes(Filme filme) {
if(FilmesAtuados.Contains(filme))
System.Console.WriteLine($"O filme {filme.Titulo} já foi adicionado à filmografia de {this.Nome}");
else
FilmesAtuados.Add(filme);
}
}