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 insiemi 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.
|
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: |
|
Le istruzioni di iterazione consentono di eseguire un ciclo in insiemi 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: |
|
Le istruzioni di spostamento trasferiscono il controllo a un'altra sezione di codice. Per ulteriori informazioni, vedere i seguenti argomenti: |
|
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: |
|
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 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#.