Partager via


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éthode Main.

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 usinget 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 awaitet 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

  1. 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.

    Case à cocher Ne pas utiliser d’instructions de niveau supérieur dans Visual Studio

  2. 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.