Ir para o conteúdo do rodapé
Iron Academy Logo
Aprenda C#
Aprenda C#

Outras categorias

C# Usando Diretivas e Aliases de Tipo no .NET 8

Tim Corey
9m 03s

A palavra-chave using em C# faz mais de uma coisa, e a diferença entre sua forma básica e suas capacidades mais recentes é maior do que a maioria dos desenvolvedores imagina. Os atalhos de namespace existem desde o início, as importações de classes estáticas chegaram no .NET 6, e o .NET 8 estendeu a sintaxe de alias para cobrir qualquer tipo, incluindo tuplas. Conhecer todas as três formas permite reduzir declarações de tipo repetitivas a um único nome legível no topo de um arquivo.

Este guia explora cada forma da diretiva using em uma aplicação de console .NET 8, com base no tutorial de Tim Corey sobre os recursos mais recentes. Construiremos a partir do atalho de namespace familiar até a nova sintaxe de alias de tipo.

Ponto de Partida: A Diretriz de Namespace Básica

[0:35 - 1:35] A configuração começa desligando usings implícitos para que cada diretiva fique claramente visível no código. Sem quaisquer declarações using no topo, chamar Console.WriteLine requer o nome completo: System.Console.WriteLine. Adicionar uma única diretiva resolve isso:

using System;
using System;

Essa única linha torna todo tipo dentro de System disponível pelo seu nome curto. A diretiva não é uma importação no senso bibliotecário; nenhum novo código é incluído. É um atalho de namespace que informa ao compilador onde procurar quando encontrar um nome de tipo não qualificado.

Usando Static: Pulando o Nome da Classe

[2:19 - 2:45] A forma using static tem como alvo uma classe estática específica em vez de um namespace. Apontá-lo para System.Console torna todo membro estático dessa classe disponível sem o prefixo da classe:

using static System.Console;

WriteLine("Hello, world!");
using static System.Console;

WriteLine("Hello, world!");

Em vez de Console.WriteLine, você chama WriteLine diretamente. Esta forma, que chegou no .NET 6, é mais útil quando um arquivo chama a mesma classe estática repetidamente. Eliminar o nome repetido da classe reduz o ruído visual em cada ponto de chamada.

Aliases de Tipo: Nomeando Qualquer Tipo

[3:41 - 6:40] O .NET 8 estendeu a sintaxe de alias para que using possa atribuir um nome curto a qualquer tipo. Um caso motivador é um tuple nomeado. Tuples são tipos de retorno comuns quando um método precisa enviar de volta vários valores relacionados sem uma definição completa de classe, mas declarar o mesmo tipo de tuple mais de uma vez em um arquivo gera muita repetição:

// Without an alias, each declaration repeats the full tuple type
(string FirstName, string LastName) GetUser() { ... }
(string FirstName, string LastName) person = GetUser();
// Without an alias, each declaration repeats the full tuple type
(string FirstName, string LastName) GetUser() { ... }
(string FirstName, string LastName) person = GetUser();

Um alias de tipo reduz isso a uma única declaração no topo:

using Person = (string FirstName, string LastName);
using Person = (string FirstName, string LastName);

A partir desse ponto no arquivo, Person representa a definição completa da tupla:

Person GetUser() { ... }
Person person = GetUser();
Person GetUser() { ... }
Person person = GetUser();

O alias vive apenas dentro do arquivo onde é declarado. Ele não se propaga por toda a aplicação. Note que se você precisa que o tipo esteja disponível em todo o projeto, um registro ou classe é a escolha apropriada.

Alias vs. Registro ou Classe

[5:32 - 6:23] Surge uma pergunta comum: se Person parece um record, por que não declarar um? A resposta diz respeito ao escopo e ao peso. Um registro ou classe é um tipo nomeado que existe em todo o projeto, possui seu próprio arquivo e precisa ser mantido à medida que a base de código evolui. Um alias de tuple é uma conveniência local ao arquivo. Quando você usa um tuple de dois campos duas ou três vezes dentro de um arquivo de classe, criar uma definição de tipo completo adiciona uma sobrecarga de manutenção que o alias evita. A intenção da equipe do .NET é fornecer um gradiente de opções em vez de forçar uma escolha binária entre um tuple bruto e uma classe completa.

Conclusão

As três formas using cobrem necessidades diferentes. A diretiva básica de namespace encurta os nomes de tipos qualificados em todo um arquivo, enquanto using static remove o prefixo de classe das chamadas a membros estáticos. O alias de tipo .NET 8 atribui um nome legível a qualquer tipo, incluindo tuples, com escopo limitado a um único arquivo. Cada forma reduz a repetição sem alterar o comportamento subjacente do seu código.

Assista ao vídeo completo no canal do YouTube de Tim Corey para uma demonstração ao vivo de todas as três formas em um projeto funcional .NET 8.

Hero Worlddot related to C# Usando Diretivas e Aliases de Tipo no .NET 8
Hero Affiliate related to C# Usando Diretivas e Aliases de Tipo no .NET 8

Ganhe mais compartilhando o que você ama.

Você cria conteúdo para desenvolvedores que trabalham com .NET, C#, Java, Python ou Node.js? Transforme sua expertise em renda extra!

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim