Classes anônimas em C#(CSharp)

Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 22/11/2018


Uma classe anônima nada mais é que uma classe que não tem nome. Estranho mas bem útil em algumas situações.
Você cria uma classe anônima simplesmente utilizando a palavra-chave new e um par de chaves onde definimos os campos e valores, assim:

minhaClasseAnonima = new { Nome = "Antonio", Idade = 18 };

Esta classe contém dois campos públicos chamados Nome e Idade, com seus devidos valores, o compilador infere os tipos dos campos a partir dos tipos de dados utilizados para inicializa-los, para o Nome uma string "Antonio" e para idade um inteiro 18.
O compilador gera um nome próprio para a classe e não informa qual é este nome, um enigma interessante não é? Se não sabemos o nome da classe, com vamos utiliza-la? qual o tipo do objeto minhaClasseAnonima?.
Isto não é um problema se você declarar sua variável como uma variável implicitamente tipada utilizando a palavra-chave var, assim:

var minhaClasseAnonima = new { Nome = "Antonio", Idade = 18 };

Assim o compilador vai criar uma variável do mesmo tipo da expressão utilizada para inicializá-la e podemos acessar os campos no objeto utilizando a notação familiar de ponto, assim:

Console.WriteLine("Seu nome é: {0} e a idade: {1}", minhaClasseAnonima.Nome, minhaClasseAnonima.Idade);

Podemos criar outra instancia da mesma classe anônima mas com valores diferentes, assim:

var OutraClasseAnonima = new { Nome = "josé", Idade = 21};

O compilador utiliza os nomes dos campos e seu tipos de dados e ordem para determinar se duas instancias de uma classe anônima tem o mesmo tipo, quando isto acontece você pode realizar operações de atribuição, assim:

OutraClasseAnonima  = minhaClasseAnonima ;

Restições para Classes Anônimas

  • Só pode conter campos públicos.
  • Todos os campos precisam ser inicializados.
  • Os campos não podem ser estáticos.
  • Os campos não podem especificar método algum.




Comentários