Ao tentar utilizar o get da seguinte maneira:
static void Main(string[] args)
{
var sala = new Sala();
/*sala.SetReserva("D01", new ClienteCinema("João da Silva"));
sala.SetReserva("D02", new ClienteCinema("Maria de Souza"));*/
sala["D01"] = new ClienteCinema("João da Silva");
sala["D02"] = new ClienteCinema("Maria de Souza");
sala.ImprimirReservas();
Console.WriteLine(sala["D02"]);
}
class ClienteCinema
{
public string Nome { get; set; }
public ClienteCinema(string nome)
{
Nome = nome;
}
public override string ToString()
{
return Nome;
}
}
class Sala
{
private readonly IDictionary<string, ClienteCinema> reservas = new Dictionary<string, ClienteCinema>();
/*public ClienteCinema GetReserva(string codigoAssento)
{
return reservas[codigoAssento];
}
public void SetReserva(string codigoAssento, ClienteCinema cliente)
{
reservas[codigoAssento] = cliente;
}*/
public ClienteCinema this[string codigoAssento]
{
get
{
return this[codigoAssento];
}
set
{
reservas[codigoAssento] = value;
}
}
public void ImprimirReservas()
{
Console.WriteLine("Assentos Reservados");
Console.WriteLine("====================");
foreach(var r in reservas)
Console.WriteLine($"{r.Key} - {r.Value}");
}
}
Na execução acontece o erro StackOverflowException
ao utilizar o get. Por que não posso utilizar o get dessa maneira? E qual a maneira correta de utilizá-lo?