Le modèle d’application console C# génère des instructions de niveau supérieur
À compter de .NET 6, le modèle de projet pour les nouvelles applications console C# génère le code suivant dans le fichier Program.cs :
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
La nouvelle sortie utilise des fonctionnalités C# récentes qui simplifient le code que vous devez écrire pour un programme. Pour .NET 5 et versions antérieures, le modèle d’application console génère le code suivant :
using System;
namespace MyApp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Dans le code précédent, l’espace de noms réel dépend du nom du projet.
Ces deux formulaires représentent le même programme. Les deux sont valides en C#. Lorsque vous utilisez la version la plus récente, vous devez uniquement écrire le corps de la méthode Main
. Le compilateur génère une classe Program
avec une méthode de point d’entrée et place toutes vos instructions de niveau supérieur dans cette méthode. Le nom de la méthode générée n’est pas Main
, il s’agit d’un détail d’implémentation que votre code ne peut pas référencer directement. Vous n’avez pas besoin d’inclure les autres éléments de programme, le compilateur les génère pour vous. Vous pouvez en savoir plus sur le code généré par le compilateur lorsque vous utilisez des instructions de niveau supérieur dans l’article sur instructions de niveau supérieur dans la section Notions de base du Guide C#.
Vous avez deux options pour utiliser des didacticiels qui ne sont pas mis à jour pour utiliser des modèles .NET 6+ :
- Utilisez le nouveau style de programme, en ajoutant de nouvelles instructions de niveau supérieur à mesure que vous ajoutez des fonctionnalités.
- Convertissez le nouveau style de programme en style plus ancien, avec une classe
Program
et une méthodeMain
.
Si vous souhaitez utiliser les anciens modèles, consultez Utiliser l’ancien style de programme plus loin dans cet article.
Utiliser le nouveau style de programme
Les fonctionnalités qui simplifient le nouveau programme sont instructions de niveau supérieur, directives globales using
et directives implicites using
.
Le terme instructions de niveau supérieur signifie que le compilateur génère les éléments de classe et de méthode pour votre programme principal. La méthode de classe et de point d’entrée générées par le compilateur sont déclarées dans l’espace de noms global. Vous pouvez examiner le code de la nouvelle application et imaginer qu’elle contient les instructions à l’intérieur de la méthode Main
générée par des modèles antérieurs, mais dans l’espace de noms global.
Vous pouvez ajouter d’autres instructions au programme, tout comme vous pouvez ajouter d’autres instructions à votre méthode de Main
dans le style traditionnel. Vous pouvez accéder args
(arguments de ligne de commande), utiliser await
et définir le code de sortie. Vous pouvez même ajouter des fonctions. Ils sont créés en tant que fonctions locales imbriquées à l’intérieur de la méthode de point d’entrée généré. Les fonctions locales ne peuvent pas inclure de modificateurs d’accès (par exemple, public
ou protected
).
Les instructions de niveau supérieur et les directivesusing
implicites simplifient le code qui compose votre application. Pour suivre un didacticiel existant, ajoutez les nouvelles instructions au fichier Program.cs généré par le modèle. Vous pouvez imaginer que les instructions que vous écrivez se trouvent entre les accolades ouvertes et fermantes dans la méthode Main
dans les instructions du didacticiel.
Si vous préférez utiliser l’ancien format, vous pouvez copier le code à partir du deuxième exemple de cet article et poursuivre le didacticiel comme précédemment.
Vous pouvez en savoir plus sur les instructions de niveau supérieur dans le didacticiel d’exploration sur les instructions de niveau supérieur.
Directives using
implicites
Le terme directives using
implicites signifie que le compilateur ajoute automatiquement un ensemble de directives using
en fonction du type de projet. Pour les applications console, les directives suivantes sont implicitement incluses dans l’application :
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
D’autres types d’applications incluent d’autres espaces de noms courants pour ces types d’applications.
Si vous avez besoin d'using
directives qui ne sont pas implicitement incluses, vous pouvez les ajouter au fichier .cs qui contient des instructions de niveau supérieur ou à d’autres fichiers .cs. Pour les directives using
dont vous avez besoin dans tous les fichiers .cs d’une application, utilisez les directives globales using
.
Désactiver les directives implicites de using
Si vous souhaitez supprimer ce comportement et contrôler manuellement tous les espaces de noms de votre projet, ajoutez <ImplicitUsings>disable</ImplicitUsings>
à votre fichier projet dans l’élément <PropertyGroup>
, comme illustré dans l’exemple suivant :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>
</Project>
Directives globales using
Une directive using
globale importe un espace de noms pour l’ensemble de votre application au lieu d’un seul fichier. Ces directives globales peuvent être ajoutées soit en ajoutant un élément <Using>
au fichier projet, soit en ajoutant la directive global using
à un fichier de code.
Vous pouvez également ajouter un élément <Using>
avec un attribut Remove
à votre fichier projet pour supprimer une directive using
implicite spécifique. Par exemple, si la fonctionnalité de directives using
implicites est activée avec <ImplicitUsings>enable</ImplicitUsings>
, l’ajout de l’élément suivant de <Using>
supprime l’espace de noms System.Net.Http
de ceux qui sont importés implicitement :
<ItemGroup>
<Using Remove="System.Net.Http" />
</ItemGroup>
Utiliser l’ancien style de programme
À compter du Kit de développement logiciel (SDK) .NET 6.0.300, le modèle console
a une option de --use-program-main
. Utilisez-le pour créer un projet de console qui n’utilise pas d’instructions de niveau supérieur et qui a une méthode Main
.
dotnet new console --use-program-main
Le Program.cs
généré est le suivant :
namespace MyProject;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Utiliser l’ancien style de programme dans Visual Studio
Lorsque vous créez un projet, les étapes de configuration mènent à la page de configuration Informations supplémentaires. Dans cette page, cochez la case Ne pas utiliser d’instructions de niveau supérieur.
Une fois votre projet créé, le contenu
Program.cs
est le suivant :namespace MyProject; class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } }
Remarque
Visual Studio conserve la valeur des options la prochaine fois que vous créez le projet en fonction du même modèle. Par défaut, lors de la création d’un projet d’application console à la prochaine fois, la case à cocher « Ne pas utiliser les instructions de niveau supérieur » est cochée.
Le contenu du fichier Program.cs
peut être différent pour correspondre au style de code défini dans les paramètres globaux de l’éditeur de texte Visual Studio ou dans le fichier EditorConfig
.
Pour plus d’informations, consultez Créer des paramètres d’éditeur portables et personnalisés avec EditorConfig et Options, Éditeur de texte, C#,avancés.