Condividi tramite


Il modello di app console C# genera istruzioni di primo livello

A partire da .NET 6, il modello di progetto per le nuove app console C# genera il codice seguente nel file Program.cs:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

Per .NET 5 e versioni precedenti, il modello di app console genera il codice seguente:

using System;

namespace MyApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Nel codice precedente lo spazio dei nomi effettivo dipende dal nome del progetto.

Queste due forme rappresentano lo stesso programma. Entrambi sono validi in C#. Quando si usa la versione più recente, è sufficiente scrivere il corpo del metodo Main. Il compilatore genera una Program classe con un metodo del punto di ingresso e inserisce tutte le istruzioni di primo livello in tale metodo. Il nome del metodo generato non è Main—è un dettaglio di implementazione a cui il codice non può fare direttamente riferimento. Non è necessario includere gli altri elementi del programma; il compilatore li genera automaticamente. Per altre informazioni sul codice generato dal compilatore quando si usano istruzioni di primo livello, vedere istruzioni di primo livello nella sezione Nozioni fondamentali della Guida per C#.

Quando si lavora con esercitazioni non aggiornate per utilizzare i modelli .NET 6+, adottare una delle seguenti due opzioni.

  • Usare il nuovo stile del programma, aggiungendo nuove istruzioni di primo livello durante l'aggiunta di funzionalità.
  • Convertire il nuovo stile del programma nello stile precedente, con una Program classe e un Main metodo .

Per usare i modelli precedenti, vedere Usare lo stile precedente del programma più avanti in questo articolo.

Usa il nuovo stile del programma

Le funzionalità che semplificano il nuovo programma sono istruzioni di primo livello, direttive globali usinge direttive impliciteusing.

Il termine istruzioni di primo livello indica che il compilatore genera gli elementi della classe e del metodo per il programma principale. Il compilatore dichiara la classe generata e il metodo del punto di ingresso nello spazio dei nomi globale. Osserva il codice per la nuova applicazione e immagina che contenga le istruzioni all'interno del metodo Main generato dai template precedenti, ma nello spazio dei nomi globale.

Aggiungi altre istruzioni al programma, proprio come aggiungi istruzioni al metodo Main nello stile tradizionale. Access args (argomenti della riga di comando),usare awaite impostare il codice di uscita. È anche possibile aggiungere funzioni. Il compilatore li crea come funzioni locali annidate all'interno del metodo del punto di ingresso generato. Le funzioni locali non possono includere modificatori di accesso , ad esempio public o protected.

Sia le istruzioni di primo livello che le direttive implicite using semplificano il codice che costituisce l'applicazione. Per seguire un'esercitazione esistente, aggiungere eventuali nuove istruzioni al file Program.cs generato dal modello. Immagina che i comandi siano tra parentesi graffe nel metodo Main nelle istruzioni del tutorial.

Se si preferisce il formato precedente, copiare il codice dal secondo esempio di questo articolo e continuare l'esercitazione come prima.

Per ulteriori informazioni sulle istruzioni di primo livello, consulta l'esplorazione guidata sulle istruzioni di primo livello.

Direttive implicite using

Il termine direttive implicite using indica che il compilatore aggiunge automaticamente un set di using direttive in base al tipo di progetto. Per le applicazioni console, le direttive seguenti sono incluse in modo implicito nell'applicazione:

  • using System;
  • using System.IO;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Net.Http;
  • using System.Threading;
  • using System.Threading.Tasks;

Altri tipi di applicazione includono più namespace comuni per quei tipi di applicazione.

Se sono necessarie using direttive che non sono incluse in modo implicito, aggiungerle al file .cs che contiene istruzioni di primo livello o ad altri file di .cs . Per le direttive necessarie in tutti i file .cs di un'applicazione, utilizzare le direttive globaliusing.

Disabilitare le direttive implicite using

Per rimuovere questo comportamento e controllare manualmente tutti gli spazi dei nomi nel progetto, aggiungere <ImplicitUsings>disable</ImplicitUsings> al file di progetto nell'elemento <PropertyGroup>, come illustrato nell'esempio seguente.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    ...
    <ImplicitUsings>disable</ImplicitUsings>
  </PropertyGroup>

</Project>

Direttive globali using

Una direttiva globale using importa uno spazio dei nomi per l'intera applicazione anziché un singolo file. Aggiungere queste direttive globali includendo un <Using> elemento nel file di progetto o aggiungendo la global using direttiva a un file di codice.

Per rimuovere una direttiva implicita usingspecifica, aggiungere un <Using> elemento con un Remove attributo al file di progetto. Ad esempio, se la funzionalità delle direttive implicite using è attivata con <ImplicitUsings>enable</ImplicitUsings>, l'aggiunta del seguente elemento <Using> rimuove il namespace System.Net.Http da quelli importati implicitamente:

<ItemGroup>
  <Using Remove="System.Net.Http" />
</ItemGroup>

Usa lo stile del programma precedente

A partire da .NET SDK 6.0.300, il modello console include un'opzione --use-program-main. Usarlo per creare un progetto console che non usa istruzioni di primo livello e ha un Main metodo.

dotnet new console --use-program-main

Il generato Program.cs è il seguente:

namespace MyProject;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

Usa lo stile del programma precedente in Visual Studio

  1. Quando si crea un nuovo progetto, i passaggi di installazione passano alla pagina Configurazione informazioni aggiuntive . In questa pagina selezionare la casella di controllo Non usare istruzioni di primo livello .

    Visual Studio non usa casella di controllo istruzioni di livello superiore

  2. Dopo aver creato il progetto, il Program.cs contenuto è il seguente:

    namespace MyProject;
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
    

Nota

Visual Studio mantiene il valore dell'opzione per la successiva creazione di un progetto basato sullo stesso modello. Se è stato creato un progetto app console con la casella di controllo Non usare istruzioni di primo livello selezionata, questa opzione viene selezionata quando si crea il progetto app console successivo. Il contenuto del file Program.cs potrebbe essere diverso per adattarsi allo stile del codice definito nelle impostazioni globali dell'editor di testo di Visual Studio o nel file EditorConfig.

Per altre informazioni, vedere Creare impostazioni dell'editor personalizzate portabili con EditorConfig e Opzioni, Editor di testo, C#, Avanzate.