Eu dei uma olhada na resolução do instrutor pro exercício 5 e a resposta é essa:
class ProdutoRestaurante
{
public string Nome { get; set; }
public decimal Preco { get; set; }
}
class Mesa
{
public int Numero { get; set; }
public List<Pedido> Pedidos { get; set; } = new List<Pedido>();
}
class Pedido
{
public ProdutoRestaurante Produto { get; set; }
public int Quantidade { get; set; }
}
class Cardapio
{
public List<ProdutoRestaurante> Itens { get; set; } = new List<ProdutoRestaurante>();
}
class Restaurante
{
public List<Mesa> Mesas { get; set; } = new List<Mesa>();
public Cardapio Cardapio { get; set; } = new Cardapio();
}
Aí com base nisso eu tentei fazer algo parecido pro último exercício desse módulo, que é fazer a classe Genero e atrelar ela à classe Musica.
Só que deu errado, porque eu tentei escrever public Genero Genero { get; set; }
na classe Musica e depois NomeDaMusica.Genero.Nome = "Metal";
no Program.cs, o que resultou em um Unhandled Exception.
O motivo: Eu não instanciei o Objeto Genero antes de declarar o Nome dele, o que até faz sentido e eu consigo entender.
Ou seja, eu deveria ter escrito assim: public Genero Genero { get; set; } = new Genero();
Mas o que eu não consigo entender é que, no código do instrutor, ele faz a mesma coisa pro ProdutoRestaurante Produto { get; set; }
, ele não instancia esse Objeto, apenas escreve a propriedade e prossegue com o código.
Estou confuso quanto a isso.