Controllo scorrimento (confronto tra C# e Java)

Aggiornamento: novembre 2007

Le istruzioni di controllo scorrimento, quali if else e switch, sono molto simili in Java e C#.

Istruzioni di diramazione

Le istruzioni di diramazione modificano il flusso del programma in fase di esecuzione sulla base di alcune condizioni.

if, else e else if

Queste istruzioni sono identiche in entrambi i linguaggi.

Istruzione switch

In entrambi i linguaggi l'istruzione switch consente l'esecuzione condizionale di più operazioni di diramazione. Esiste però una differenza, in quanto Java consente di passare da un'etichetta case a un'altra e di eseguire l'etichetta a cui si passa, a meno che non venga utilizzata un'istruzione break alla fine dell'etichetta case. In C# è tuttavia necessario utilizzare un'istruzione break o goto alla fine di ciascuna etichetta case, altrimenti il compilatore genera il seguente errore:

Il controllo non può passare da un'etichetta case a un'altra.

È opportuno notare che, se un'etichetta case non specifica il codice da eseguire in caso di corrispondenza, il controllo passa all'etichetta case successiva. Quando si utilizza goto in un'istruzione switch, è possibile passare solo a un altro blocco case nella stessa istruzione switch. Per passare all'etichetta case predefinita, utilizzare goto default., altrimenti utilizzare goto case cond, dove cond è la condizione di corrispondenza dell'etichetta case a cui si desidera passare. Un'altra differenza rispetto all'istruzione switch di Java è che in Java è possibile agire solo sui tipi integer, mentre in C# è possibile agire su una variabile stringa.

Il codice riportato di seguito ad esempio è valido in C#, ma non in Java:

static void Main(string[] args)
{
    switch (args[0])
    {
        case "copy":
            //...
            break;

        case "move":
            //...
            goto case "delete";

        case "del":
        case "remove":
        case "delete":
            //...
            break;

        default:
            //...
            break;
    }
}

Risultati restituiti da goto

In Java goto è una parola chiave riservata non implementata. È tuttavia possibile utilizzare istruzioni con etichetta con break o continue per ottenere un risultato simile a quello di goto.

C# non consente all'istruzione goto di passare a un'istruzione con etichetta. È tuttavia opportuno notare che, per passare a una determinata etichetta, l'istruzione goto deve essere compresa nell'ambito dell'etichetta. In altri termini, l'istruzione goto non può essere utilizzata per passare all'interno di un blocco di istruzioni, anche se può essere utilizzata per uscire da un blocco, da una classe o dal blocco finally nelle istruzioni try...catch. Nella maggior parte dei casi, non è opportuno utilizzare l'istruzione goto, poiché è in contrasto con le procedure consigliate per la programmazione orientata a oggetti.

Vedere anche

Concetti

Guida per programmatori C#

Altre risorse

Visual C#

Linguaggio di programmazione C# per sviluppatori Java