Istruzioni (Guida per programmatori C#)

Le azioni eseguite dal programma vengono espresse nelle istruzioni.Azioni comuni includono: dichiarazioni di variabili, assegnazione di valori, chiamate di metodi, scorrimento in ciclo di raccolte e creazione di rami su uno o un altro blocco di codice, a seconda di una condizione specificata.L'ordine in cui le istruzioni vengono eseguite in un programma, viene chiamato: flusso di controllo o flusso di esecuzione.Il flusso di controllo può variare ogni volta che viene eseguito un programma, a seconda di come il programma reagisce agli input ricevuti in fase di esecuzione.

Un'istruzione può essere costituita da una sola riga di codice che termina in un punto e virgola o da una serie di istruzioni a riga singola in un blocco.Un blocco di istruzioni è racchiuso fra parentesi {} e può contenere blocchi annidati.Nel codice seguente vengono mostrati due esempi di istruzioni a riga singola e un blocco di istruzioni su più righe:

    static void Main()
    {
        // Declaration statement.
        int counter;

        // Assignment statement.
        counter = 1;

        // Error! This is an expression, not an expression statement.
        // counter + 1; 

        // Declaration statements with initializers are functionally
        // equivalent to  declaration statement followed by assignment statement:         
        int[] radii = { 15, 32, 108, 74, 9 }; // Declare and initialize an array.
        const double pi = 3.14159; // Declare and initialize  constant.          

        // foreach statement block that contains multiple statements.
        foreach (int radius in radii)
        {
            // Declaration statement with initializer.
            double circumference = pi * (2 * radius);

            // Expression statement (method invocation). A single-line
            // statement can span multiple text lines because line breaks
            // are treated as white space, which is ignored by the compiler.
            System.Console.WriteLine("Radius of circle #{0} is {1}. Circumference = {2:N2}",
                                    counter, radius, circumference);

            // Expression statement (postfix increment).
            counter++;

        } // End of foreach statement block
    } // End of Main method body.
} // End of SimpleStatements class.
/*
   Output:
    Radius of circle #1 = 15. Circumference = 94.25
    Radius of circle #2 = 32. Circumference = 201.06
    Radius of circle #3 = 108. Circumference = 678.58
    Radius of circle #4 = 74. Circumference = 464.96
    Radius of circle #5 = 9. Circumference = 56.55
*/

Tipi di istruzioni

Nella tabella seguente vengono elencati i vari tipi di istruzioni in C# e le parole chiave associate, con i collegamenti ad argomenti che includono ulteriori informazioni:

Category

Parole chiave C# / note

Istruzioni di dichiarazione

Un'istruzione di dichiarazione introduce una nuova variabile o costante.Una dichiarazione di variabile può facoltativamente assegnare un valore alla variabile stessa.In una dichiarazione di costante, l'assegnazione è obbligatoria.

Istruzioni di espressione

Le istruzioni di espressione che calcolano un valore, devono memorizzare tale valore in una variabile.

Istruzioni di selezione

Le istruzioni di selezione consentono di creare un ramo a sezioni diverse di codice, in base a una o più condizioni specifiche.Per ulteriori informazioni, vedere i seguenti argomenti:

if, else, switch, case

Istruzioni di iterazione

Le istruzioni di iterazione consentono di eseguire un ciclo in raccolte come matrici, o di eseguire ripetutamente lo stesso insieme di istruzioni fino a che non è stata soddisfatta una condizione specificata.Per ulteriori informazioni, vedere i seguenti argomenti:

do, for, foreach, in, while

Istruzioni di spostamento

Le istruzioni di spostamento trasferiscono il controllo a un'altra sezione di codice.Per ulteriori informazioni, vedere i seguenti argomenti:

break, continue, default, goto, return, yield

Istruzioni di gestione delle eccezioni

Le istruzioni di gestione delle eccezioni consentono all'applicazione di rispondere correttamente a condizioni eccezionali verificatesi in fase di esecuzione.Per ulteriori informazioni, vedere i seguenti argomenti:

throw, try-catch, try-finally, try-catch-finally

Istruzioni checked e unchecked

Le istruzioni checked e unchecked consentono di specificare se le operazioni numeriche possono provocare un overflow quando il risultato viene memorizzato in una variabile troppo piccola per contenere il valore risultante.Per ulteriori informazioni, vedere checked e unchecked.

Istruzione await.

Se si contrassegna un metodo con il modificatore async, è possibile utilizzare l'operatore attendere nel metodo.Quando il controllo raggiunge un'espressione await nel metodo async, il controllo torna il chiamante e lo stato di avanzamento nel metodo viene sospeso finché l'attività attesa non completi.Quando l'attività è stata completata, l'esecuzione può riattivare il metodo.

Per un esempio, vedere la sezione “metodi di Async„ Metodi (Guida per programmatori C#).Per ulteriori informazioni, vedere Programmazione asincrona con Async e Await (C# e Visual Basic).

Istruzione yield return.

Un iteratore esegue un'iterazione personalizzata in una raccolta, come un elenco o una matrice.Un iteratore utilizza l'istruzione prestazioni per restituire ogni elemento uno alla volta.Quando un'istruzione yield return viene raggiunto, la posizione corrente nel codice viene memorizzata.L'esecuzione viene riavviata da quella posizione all'iteratore verrà chiamato alla successiva.

Per ulteriori informazioni, vedere Iteratori (C# e Visual Basic).

Istruzione fixed.

L'istruzione fixed impedisce che il Garbage Collector esegua la rilocazione di una variabile mobile.Per ulteriori informazioni, vedere fixed.

Istruzione lock.

L'istruzione lock consente di limitare l'accesso a blocchi di codice a un solo thread alla volta.Per ulteriori informazioni, vedere lock.

Istruzioni con etichetta

È possibile assegnare un'etichetta a un'istruzione e utilizzare quindi la parola chiave goto per passare all'istruzione con etichetta.(Vedere l'esempio nella riga seguente).

Istruzione vuota

L'istruzione vuota è costituita da un solo punto e virgola.Non esegue alcuna operazione e può essere utilizzata dove è richiesta un'istruzione ma non deve essere eseguita alcuna azione.Negli esempi seguenti vengono illustrati due utilizzi per un'istruzione vuota:

Istruzioni incorporate

Alcune istruzioni, fra cui do, while, for e foreach, sono sempre seguite da un'istruzione incorporata.Questa istruzione incorporata può essere costituita da una sola istruzione o da più istruzioni racchiuse fra parentesi {} in un blocco di istruzioni.Anche le istruzioni incorporate a riga singola possono essere racchiuse fra parentesi {}, come illustrato nell'esempio seguente:

// Recommended style. Embedded statement in  block.
foreach (string s in System.IO.Directory.GetDirectories(
                        System.Environment.CurrentDirectory))
{
    System.Console.WriteLine(s);
}

// Not recommended.
foreach (string s in System.IO.Directory.GetDirectories(
                        System.Environment.CurrentDirectory))
    System.Console.WriteLine(s);

Un'istruzione incorporata non racchiusa tra parentesi {} non può essere un'istruzione di dichiarazione o un'istruzione con etichetta,come illustrato nell'esempio seguente.

if(pointB == true)
    //Error CS1023:
    int radius = 5; 

Inserire l'istruzione incorporata in un blocco per correggere l'errore:

if (b == true)
{
    // OK:
    System.DateTime d = System.DateTime.Now;
    System.Console.WriteLine(d.ToLongDateString());
}

Blocchi di istruzioni annidati

I blocchi di istruzioni possono essere annidati, come illustrato nel codice seguente:

foreach (string s in System.IO.Directory.GetDirectories(
    System.Environment.CurrentDirectory))
{
    if (s.StartsWith("CSharp"))
    {
        if (s.EndsWith("TempFolder"))
        {
            return s;
        }
    }

}
return "Not found.";

Istruzioni non eseguibili

Se il compilatore determina che il flusso del controllo non può raggiungere mai una particolare istruzione in qualsiasi circostanza, produrrà l'avviso CS0162, come illustrato nell'esempio seguente:

// An over-simplified example of unreachable code.
const int val = 5;
if (val < 4)
{
    System.Console.WriteLine("I'll never write anything."); //CS0162
}

Sezioni correlate

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo di C#.

Vedere anche

Concetti

Guida per programmatori C#