Fala galerinha, tudo bem? Espero que sim.
No exemplo da aula a variável out int *id* ou var **id e aplicada como parâmetro out dentro da condição IF, vimos que o seu escopo vai para fora dessa cláusula IF, ou seja, o escopo da variável foi para o laço WHILE. Fiz um teste tentando usar a variável fora do laço WHILE, mas o sistema quebrou. Veja,:
public override void Main()
{
using (var streamReader = File.OpenText("clientes.csv"))
{
string linha = string.Empty;
while ((linha = streamReader.ReadLine()) != null)
{
string[] campos = linha.Split(',');
//int id = 0;
//int.TryParse(campos[0], out int id);
if (int.TryParse(campos[0], out var id))
{
Cliente cliente = new Cliente(id, campos[1], campos[2], campos[3]);
WriteLine("Dados do Cliente");
WriteLine("================");
WriteLine("ID: " + cliente.Id);
WriteLine("Nome: " + cliente.Nome);
WriteLine("Telefone: " + cliente.Telefone);
WriteLine("Website: " + cliente.Website);
WriteLine("================");
}
Console.WriteLine($"ID fora do IF: {id}");
}
** Console.WriteLine($"ID fora do WHILE: {id}");**
}
}
Minha dúvida é, o escopo de uma variável out usada como parâmetro, será sempre o escopo pai, ou seja, o escopo imediatamente superior o qual a condição ou método está inserido?