Classes anônimas em C#(CSharp)
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.
Links Relacionados
- Arquitetura CQRS
- Arrays em C#(CSharp)
- C#(CSharp) Converter inteiro para Hexadecimal e Hexadecimal para Inteiro
- C#(CSharp) Exemplo de Conversão de um List<> de uma classe qualquer para um DataTable.
- C#(CSharp) Função para verificar se um determinado número é Primo
- Calcular Idade C# (CSharp), diferença anos entre duas datas
- Classe com Métodos de extensão C# (CSharp)
- Classe para Ler e Gravar Cookies - Asp.Net MVC 4 com C# (CSharp)
- Classe para tratar valores nulos vindos de nossa Query SQL, C#(CSharp).
- Compare duas strings ignorando maiúsculas e minúsculas C#(CSharp).
- Consulta SQLServer com paginação
- Criar Classes Dinâmicas usando DynamicObject e ExpandoObject em C# (CSharp)
- Definir o dia em um DateTime.
- DELETE CASCADE no SqlServer
- Desvendando o Poder da Função STRING_AGG no SQL Server para concatenação de dados
- Diferença entre parâmetros REF e OUT em C#(CSharp)
- Emitir sons pelo auto-falante do computador em C# (CSharp)
- Exemplo de acesso a dados com SQL Server em C#.
- Explorando Tipos de Dados Personalizados no SqlServer: Utilidade e Impacto na Performance
- Extensões para DataReader, tratando valores de suas consultas SQL (DataReaderExtensions) C#(CSharp)
- Formatar CEP em C# (CSharp)
- Função para devolver data do próximo dia da semana informado C#(CSharp).
- Gerando números randômicos para sorteio de jogos de azar C#(CSharp)
- Grafana Loki e .NET Framework com C#
- Incrementando e decrementando variáveis em C#(CSharp)
- Injeção de dependência
- Ler string de conexão (connectionStrings) do arquivo Web.config Asp.Net MVC co C#(CSharp)
- Métodos de extensão C#
- Ordenando um array com o comando OrderBy C#(CSharp)
- Parar um loop foreach usando o comando break C#(CSharp).
- Recuperar a URL da página anterior em Asp.Net C# (CSharp)
- Recuperar a URL da página atual em Asp.Net C# (CSharp)
- Recuperar para código C# (CSharp) o valor de um componente de nossa página
- Retorna o IP da conexão do Cliente em Asp.Net MVC com C# (CSharp)
- Retorna os dados do Navegador do Cliente em Asp.Net MVC com C# (CSharp)
- Salvando CSV com cabeçalho no SQL Server Management Studio
- Separar String de caracteres C#(CSharp)
- Serilog e .NET Framework com C#
- Tipos de dados em C# (CSharp)
- Tipos de dados primitivos em C#(CSharp)
- Validando Valores nulos vindos de nosso Banco de Dados C#(CSharp)
- Validar Modelos com Data Annotation e Windows Form Application C#(CSharp)
- Verificar se uma string é um digito em C# (CSharp)