Tipos anônimos no C#
05/04/2022
André Baltieri

O C# é conhecido por sua tipagem, mas neste artigo vamos conhecer os vários tipos anônimos que temos nele.

Tipar ou não tipar?

O C# é uma linguagem muito dinâmica e versátil, o que significa que ela tem diversas aplicabilidades, como Web, Mobile, Desktop, IA e games.

Dentre as várias coisas boas do C#, está sua tipagem forte, que implica na obrigatoriedade de um tipo para nossas variáveis.

Abaixo temos um exemplo utilizando JavaScript e o mesmo utilizando C#, apenas para efeito de comparação.

let name = 'André Baltieri';
string name = "André Baltieri";

Confira nosso artigo sobre C# para ficar por dentro de todas as funcionalidades dele.

Quando não tipar?

Um bom exemplo que passei, e não foi uma única vez, é o consumo de APIs externas. Em diversos momentos queremos fazer uma requisição a uma API, mas não queremos criar um tipo apenas para esperar seu retorno.

Outro cenário que usei muito foi importação e exportação de dados, coisas pequenas, pontuais e que criar tipos ia tomar mais tempo.

Dicionários

Normalmente não comentamos sobre dicionários para criação de estruras, mas sim para listas. Porém, podemos utilizá-los para estruturar dados.

var person = new Dictionary<string, object> 
{
    ["Name"] = "André Baltieri",
    ["BirthDate"] = DateTime.Now
}

Além do formato utilizando [], podemos definir as estruturas utilizando {} com as chaves e valores como mostrado abaixo.

var person = new Dictionary<string, object> 
{
    { "Name", "André Baltieri" },
    { "BirthDate", DateTime.Now }
}

Tipo anônimo

Se você não quiser criar uma classe, estrutura ou record para seus dados, você pode utilizar um tipo anônimo no C#.

var person = new 
{
    Name = "André Baltieri",
    BirthDate = DateTime.Now
}

Como podemos notar, basta "fingir" que está instanciando uma classe e criar os nomes das propriedade e valores sob demanda.

Tipagem com Records

Caso queira uma abordagem com o mínimo de tipagem possível, a recomendação mais simples talvez sejam os records.

public record Person(string Name, DateTime BirthDate);

var person = new Person("André Baltieri", DateTime.Now);

Basta definir o tipo e nome das propriedades já na criação do record, como se fossem os parâmetros de um método e pronto.

Tipagem com classe

Por fim, se quiser utilizar o clássico, com todo poder que a OOP oferece, vale a pena ir de classes.

public class Person
{
    public string Name { get; init; }
    public DateTime BirthDate { get; init; }
}

var person = new Person
{
    Name = "André Baltieri",
    BirthDate = DateTime.Now
};

Conclusão

Podemos trabalhar com tipos anônimos de forma simples e fácil no C#, sem a necessidade de criar classes, estruturas ou registros.

Conheça o autor

André Baltieri

Microsoft MVP

Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.

An unhandled error has occurred. Reload 🗙