1
resposta

Sobre a questão

Eu não entendi por que não copila sendo que "referencias" esta recebendo os valores da variável cli2 (referencias[1] = cli2;) A explicação abaixo não ficou muito claro para mim :

"Correta! Não podemos acessar a propriedade Nome a partir de uma referência de object."

static void Main(string[] args)
{
    Cliente cli1 = new Cliente();
    cli1.Nome = "Tainá";

    Cliente cli2 = new Cliente();
    cli2.Nome = "Carlos";

    object[] referencias = new object[5];

    referencias[0]  = cli1;
    referencias[1]  = cli2;

    Console.WriteLine(referencias[1].Nome);
    Console.ReadLine();
}
1 resposta

Oi Alan, tudo bem?

É o seguinte, o C# é uma linguagem fortemente tipada, sendo assim ele precisa de antemão conhecer quais são os tipos das variáveis com as quais ele está trabalhando, do contrário dará erro.

Nesse código se você chamar cli2.Nome estará ok porque você disse ao C# que ele é do tipo Cliente, mas no caso de referencias, você declarou como object, que é um dos tipos mais geréricos possiveis no C#. Desse modo referencias[0 ou 1] só conseguirão acessar propriedades de cli1 e cli2 que já existam na definição de Object (ToString(), por exemplo).