C# Utilisation de directives et alias de type dans .NET 8
Le mot-clé using en C# fait plus d'une chose, et l'écart entre sa forme basique et ses nouvelles capacités est plus large que la plupart des développeurs ne le réalisent. Les raccourcis de namespace existent depuis le début, les importations de classes statiques sont arrivées avec .NET 6, et .NET 8 a étendu la syntaxe des alias pour couvrir tout type, y compris les tuples. Connaître les trois formes vous permet de réduire les déclarations de type répétitives à un seul nom lisible en haut d'un fichier.
Ce guide explore chaque forme de la directive using dans une application console .NET 8, basée sur le tutoriel de Tim Corey des dernières fonctionnalités. Nous partirons du raccourci namespace familier jusqu'à la nouvelle syntaxe d'alias de type.
Point de départ : La directive de namespace de base
[0:35 - 1:35] La configuration commence par désactiver les usings implicites afin que chaque directive soit clairement visible dans le code. Sans déclarations using en haut, appeler Console.WriteLine nécessite le nom complet qualifié : System.Console.WriteLine. L'ajout d'une seule directive résout cela :
using System;
using System;
Cette ligne rend chaque type à l'intérieur de System disponible par son nom court. La directive n'est pas une importation au sens de la bibliothèque; aucun nouveau code n'est intégré. C'est un raccourci de namespace qui indique au compilateur où chercher lorsqu'il rencontre un nom de type non qualifié.
Utilisation de Static : Sauter le nom de la classe
[2:19 - 2:45] La forme using static cible une classe statique spécifique plutôt qu'un namespace. La pointer sur System.Console rend chaque membre statique de cette classe disponible sans le préfixe de classe :
using static System.Console;
WriteLine("Hello, world!");
using static System.Console;
WriteLine("Hello, world!");
Au lieu de Console.WriteLine, vous appelez directement WriteLine. Cette forme, qui est arrivée dans .NET 6, est la plus utile lorsqu'un fichier appelle la même classe statique à plusieurs reprises. Éliminer le nom de la classe répété réduit le bruit visuel à chaque site d'appel.
Alias de Type : Nommer n'importe quel type
[3:41 - 6:40] .NET 8 a étendu la syntaxe des alias pour que using puisse attribuer un nom court à tout type. Un cas motivant est un tuple nommé. Les tuples sont des types de retour courants lorsqu'une méthode doit renvoyer plusieurs valeurs liées sans une définition complète de classe, mais déclarer plusieurs fois le même type de tuple dans un fichier produit beaucoup de répétition :
// 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();
Un alias de type réduit cela à une déclaration unique en haut :
using Person = (string FirstName, string LastName);
using Person = (string FirstName, string LastName);
À partir de ce point dans le fichier, Person remplace la définition complète du tuple :
Person GetUser() { ... }
Person person = GetUser();
Person GetUser() { ... }
Person person = GetUser();
L'alias vit uniquement à l'intérieur du fichier où il est déclaré. Il ne se propage pas dans l'ensemble de l'application. Notez que si vous avez besoin que le type soit disponible à l'échelle du projet, un record ou une classe est le choix approprié.
Alias contre Record ou Classe
[5:32 - 6:23] Une question courante se pose : si Person ressemble à un record, pourquoi ne pas simplement en déclarer un ? La réponse tient à la portée et au poids. Un record ou une classe est un type nommé qui existe dans l'ensemble du projet, possède son propre fichier et doit être maintenu à mesure que la base de code évolue. Un alias de tuple est une commodité locale au fichier. Lorsque vous utilisez un tuple à deux champs deux ou trois fois dans un fichier de classe, créer une définition de type complète ajoute une surcharge de maintenance que l'alias évite. L'intention de l'équipe .NET est de fournir un éventail d'options plutôt que d'imposer un choix binaire entre un tuple brut et une classe complète.
Conclusion
Les trois formes using couvrent différents besoins. La directive basique de namespace raccourcit les noms de types qualifiés dans tout le fichier, tandis que using static supprime le préfixe de classe des appels de membres statiques. L'alias de type .NET 8 assigne un nom lisible à tout type, y compris les tuples, limité à un seul fichier. Chaque forme réduit la répétition sans changer le comportement sous-jacent de votre code.
Regardez la vidéo complète sur la chaîne YouTube de Tim Corey channel pour une démonstration en direct des trois formes dans un projet .NET 8 en cours.
