Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Suggerimento
Novità dello sviluppo di software? Iniziare prima con le esercitazioni introduttive . Illustrano come scrivere i primi programmi C# prima di apprendere la struttura del programma.
Esperienza in un'altra lingua? È possibile ignorare la sezione Introduzione per la sintassi specifica di C#, quindi tornare qui.
I programmi C# vengono compilati da questi blocchi predefiniti principali: gli spazi dei nomi organizzano i tipi, i tipi (classi, struct, interfacce, enumerazioni e delegati) definiscono il comportamento e i dati e le istruzioni e le espressioni eseguono operazioni in fase di esecuzione. Il modo in cui si struttura il punto di ingresso dipende dallo stile dell'applicazione scelto.
Scelta dello stile dell'applicazione
Quando si crea un programma C#, effettuare due scelte indipendenti su come strutturarla:
-
Basato su file o basato su progetto?
- Un'app basata su file viene eseguita da un singolo
.csfile senza file di progetto. - Un'app basata su progetto usa un
.csprojfile e può estendersi su più file di origine.
- Un'app basata su file viene eseguita da un singolo
-
Istruzioni o
Mainmetodi di primo livello?- Le istruzioni di primo livello consentono di scrivere codice eseguibile direttamente all'inizio di un file.
- Un
Mainmetodo esegue il wrapping del punto di ingresso in un metodo statico esplicito.
Sia le app basate su progetto sia le app basate su file supportano entrambi gli stili del punto di ingresso.
App basate su file e app basate su progetti
A partire da C# 14 e .NET 10, le app basate su file consentono di eseguire un programma contenuto in un singolo *.cs file senza un file di progetto. Archiviare il codice seguente in un file denominato hello-world.cs ed eseguirlo con dotnet run hello-world.cs o dotnet hello-world.cs:
#!/usr/bin/env dotnet
Console.WriteLine("Hello, World!");
Annotazioni
La #! riga consente alle shell Unix di eseguire direttamente il file. In qualsiasi sistema Unix impostare l'autorizzazione execute (+x) ed eseguire il file dalla riga di comando.
Le app basate su file supportano tutta la sintassi C# e possono usare le direttive del preprocessore per configurare il sistema di compilazione. Usare app basate su file per piccole utilità della riga di comando, prototipi ed esperimenti. Un'app basata su file è costituita da un singolo file in una directory:
my-app/
└── hello-world.cs
Le app basate su progetto usano un .csproj file e i comandi .NET CLI, dotnet new, dotnet build e dotnet run il flusso di lavoro. Scegliere le app basate su progetto quando il programma si estende su più file o richiede una configurazione di compilazione con granularità fine. Un'app basata su progetto include un file di progetto insieme a uno o più file di origine:
my-app/
├── my-app.csproj
├── Program.cs
├── Models/
│ └── Person.cs
└── Services/
└── GreetingService.cs
Se l'app basata su file aumenta, è possibile convertirla facilmente in un'app basata su progetto. Eseguire dotnet project convert per generare un file di progetto dal file di origine esistente.
Se si conosce che l'app necessita di più file di origine fin dall'inizio, iniziare con un'app basata su progetto. Evitare il passaggio di conversione e organizzare immediatamente il codice in file separati.
Istruzioni di primo livello vs. Main metodo
Usando istruzioni di primo livello, è possibile scrivere codice eseguibile direttamente in un file senza eseguire il wrapping in una classe e Main in un metodo. Questo stile è l'impostazione predefinita quando si crea una nuova app console con dotnet new console. L'esempio seguente illustra un programma C# moderno che usa istruzioni di primo livello:
Console.WriteLine("Hello, World!");
namespace YourNamespace
{
class YourClass
{
}
struct YourStruct
{
}
interface IYourInterface
{
}
delegate int YourDelegate();
enum YourEnum
{
}
}
Un solo file in un progetto può avere istruzioni di primo livello e il punto di ingresso è la prima riga di testo del programma in tale file. Man mano che si creano programmi di grandi dimensioni, si includono più elementi del programma.
È anche possibile definire un metodo statico Main esplicito come punto di ingresso del programma:
// A skeleton of a C# program using an explicit Main method
namespace YourNamespace;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Entrambi gli stili dei punti di ingresso funzionano con le app basate su file e basate su progetto. Entrambi gli stili supportano le stesse funzionalità.
Compilazione ed esecuzione di programmi C#
C# è un linguaggio compilato . Per le app basate su progetto, usare il dotnet build comando per compilare i file di origine in un pacchetto binario. Usare dotnet run per compilare ed eseguire in un unico passaggio. L'interfaccia della dotnet riga di comando, inclusa in .NET SDK, offre molti strumenti per creare, compilare e gestire progetti C#.
Per le app basate su file, dotnet run hello-world.cs compila ed esegue direttamente il singolo file, senza che sia necessario alcun file di progetto.
Espressioni e istruzioni
Se avete seguito le esercitazioni Per iniziare, avete già scritto espressioni e istruzioni. Ogni riga di codice digitata è una o l'altra (o entrambe). Ora definiamo questi termini.
Le espressioni e le istruzioni sono elementi costitutivi fondamentali di un programma in C#. Un'espressione produce un valore. Un'istruzione esegue un'azione e termina in genere in un punto e virgola.
Di seguito sono riportate le espressioni:
-
42(valore letterale) -
x + y(operazione aritmetica) -
Math.Max(a, b)(chiamata al metodo che produce un valore) -
condition ? trueValue : falseValue(espressione condizionale) -
new Person("John")(creazione di oggetti)
Un'istruzione esegue un'azione. Le istruzioni controllano il flusso del programma, dichiarano variabili o richiamano le operazioni. Di seguito sono riportate le dichiarazioni:
-
int x;(dichiarazione) -
int x = 42;(istruzione di dichiarazione con inizializzazione) -
Console.WriteLine("Hello");(istruzione di chiamata al metodo) -
if (condition) { /* code */ }(istruzione condizionale) -
return result;(istruzione di ritorno)
Le istruzioni spesso contengono espressioni e le espressioni possono annidarsi all'interno di altre espressioni. Ad esempio, l'istruzione di dichiarazione seguente assegna f al risultato di un'espressione di addizione. Tale espressione di addizione aggiunge i risultati di due espressioni di chiamata al metodo:
var maxResult = Math.Max(a, b) + Math.Max(c, d);
Per informazioni dettagliate sulle dichiarazioni, consultare Dichiarazioni. Per informazioni sui membri con corpo di espressione, vedere Membri con corpo di espressione.