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!");
Il nuovo output usa funzionalità C# recenti che semplificano il codice necessario per scrivere per un programma. 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 classe Program
con un metodo 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 che il codice non può fare riferimento direttamente. Non è necessario includere gli altri elementi del programma, il compilatore li genera automaticamente. È possibile ottenere altre informazioni sul codice generato dal compilatore quando si usano istruzioni di primo livello nell'articolo su istruzioni di primo livello nella sezione Nozioni fondamentali della Guida per C#.
Hai due opzioni per lavorare con esercitazioni che non sono ancora aggiornate per utilizzare i modelli .NET 6+:
- 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 classe
Program
e un metodoMain
.
Per usare i modelli precedenti, consultare la sezione Usare lo stile del programma precedente più avanti nell'articolo.
Usa il nuovo stile del programma
Le funzionalità che semplificano il nuovo programma sono istruzioni di primo livello, direttive globali using
, e direttive implicite using
.
Il termine istruzioni di primo livello indica che il compilatore genera la classe e gli elementi del metodo per il programma principale. La classe generata dal compilatore e il metodo del punto di ingresso vengono dichiarati nello spazio dei nomi globale. È possibile esaminare il codice della nuova applicazione e immaginare che contenga le istruzioni che si trovano all'interno del metodo Main
generato dai modelli precedenti, ma nello spazio dei nomi globale.
È possibile aggiungere altre istruzioni al programma, proprio come è possibile aggiungere altre istruzioni al metodo Main
nello stile tradizionale. È possibile accedere args
(argomenti della riga di comando), usare await
e impostare il codice di uscita. È anche possibile aggiungere funzioni. Vengono create 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 sia le direttive implicite using
semplificano il codice che costituisce l'applicazione. Per seguire un tutorial esistente, aggiungere nuove istruzioni al file Program.cs generato dal modello. Puoi immaginare che le istruzioni che scrivi siano comprese tra le parentesi graffe aperte e chiuse nel metodo Main
nelle istruzioni dell'esercitazione.
Se si preferisce usare il formato precedente, è possibile copiare il codice dal secondo esempio di questo articolo e continuare l'esercitazione come prima.
Puoi saperne di più sulle istruzioni di primo livello nell'esercitazione esplorativa su istruzioni di primo livello.
Direttive using
implicite
Il termine direttive using
implicite significa che il compilatore aggiunge automaticamente un set di direttive using
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 direttive using
che non sono incluse in modo implicito, è possibile aggiungerle al file .cs che contiene istruzioni di primo livello o ad altri file di .cs. Per le direttive using
necessarie in tutti i file di .cs di un'applicazione, usare le direttive globali using
.
Disabilitare direttive using
implicite
Se si desidera rimuovere questo comportamento e controllare manualmente tutti i namespace 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 using
globali
Una direttiva using
globale importa uno spazio dei nomi per l'intera applicazione anziché un singolo file. Queste direttive globali possono essere aggiunte aggiungendo un elemento <Using>
al file di progetto o aggiungendo la direttiva global using
a un file di codice.
È anche possibile aggiungere un elemento <Using>
con un attributo Remove
al file di progetto per rimuovere una specifica direttiva implicita using
. Ad esempio, se la funzionalità delle direttive using
implicite è attivata con <ImplicitUsings>enable</ImplicitUsings>
, l'aggiunta dell'elemento <Using>
seguente rimuove lo spazio dei nomi System.Net.Http
da quelli importati in modo implicito:
<ItemGroup>
<Using Remove="System.Net.Http" />
</ItemGroup>
Usa lo stile del programma precedente
A partire da .NET SDK 6.0.300, il modello di console
ha un'opzione --use-program-main
. Usarlo per creare un progetto console che non usa istruzioni di primo livello e ha un metodo Main
.
dotnet new console --use-program-main
Il Program.cs
generato è il seguente:
namespace MyProject;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Usa lo stile del programma vecchio in Visual Studio
Quando si crea un nuovo progetto, i passaggi di installazione passano alla pagina Informazioni aggiuntive configurazione. In questa pagina selezionare la casella di controllo Non usare istruzioni di primo livello.
Dopo aver creato il progetto, il contenuto
Program.cs
è il seguente:namespace MyProject; class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } }
Nota
Visual Studio mantiene il valore delle opzioni nelle prossime creazioni di progetti basati sullo stesso modello, quindi per impostazione predefinita, quando si crea nuovamente un progetto di Console App, la casella di controllo per "Non usare istruzioni di primo livello" sarà selezionata.
Il contenuto del file Program.cs
potrebbe essere diverso in base allo stile di codice definito nelle impostazioni globali dell'editor di testo di Visual Studio o nel file EditorConfig
.
Per altre informazioni, vedere Crea impostazioni portatili e personalizzate per l'editor con EditorConfig e Opzioni, Editor di Testo, C#, Avanzate.