Operatori di C#
Aggiornamento: Luglio 2008
In C# è disponibile un elevato numero di operatori, ovvero simboli utilizzati per specificare quali operazioni eseguire in un'espressione. Le operazioni sui tipi integrali come ==, !=, <, >, <=, >=, binary +, binary -, ^, &, |, ~, ++, -- e sizeof() sono generalmente consentite sulle enumerazioni. È inoltre possibile sottoporre a overload molti operatori, in modo da modificarne il significato quando vengono applicati a tipi definiti dall'utente.
Nella tabella seguente sono elencati gli operatori di C# raggruppati in ordine di precedenza. Gli operatori all'interno di ogni gruppo hanno precedenza uguale.
Categoria degli operatori |
Operatori |
---|---|
Primario |
|
Unario |
|
Moltiplicazione |
|
Addizione |
|
Spostamento |
|
Relazione e verifica del tipo |
|
Uguaglianza |
|
AND logico |
|
XOR logico |
|
OR logico |
|
AND condizionale |
|
OR condizionale |
|
Condizionale |
|
Assegnazione |
|
Null-coalescing |
|
Lambda |
Overflow di valori aritmetici
Gli operatori aritmetici (+, -, *, /) possono produrre risultati non compresi nell'intervallo di valori possibili per il tipo numerico specifico. Per informazioni dettagliate, fare riferimento alla sezione su un operatore specifico. Di seguito, sono riportate alcune informazioni generali.
Un overflow di valori aritmetici interi genera un'eccezione OverflowException o elimina i bit più significativi del risultato. La divisione di numeri interi per zero genera sempre un'eccezione DivideByZeroException.
Un overflow di valori aritmetici a virgola mobile o una divisione per zero non genera mai un'eccezione perché i tipi a virgola mobile sono basati su IEEE 754 e possono pertanto rappresentare valori infiniti e NaN (Not a Number).
Un overflow di valori aritmetici decimali genera sempre un'eccezione OverflowException. La divisione di valori decimali per zero genera sempre un'eccezione DivideByZeroException.
Quando si verifica un overflow di valori interi, i risultati variano a seconda del contesto di esecuzione, che può essere checked o unchecked. Nei contesti checked viene generata un'eccezione OverflowException. Nei contesti unchecked, l'esecuzione continua dopo che sono stati scartati i bit più significativi del risultato. Pertanto, C# consente all'utente di gestire o ignorare l'overflow.
L'overflow viene generato non solo dagli operatori aritmetici, ma anche dai cast da tipo integrale a tipo integrale, ad esempio il cast di long in int, che possono essere eseguiti in contesti checked o unchecked. Tuttavia, gli operatori bit per bit e shift non generano mai overflow.
Vedere anche
Attività
Esempio di overload dell'operatore
Concetti
Riferimenti
Operatori che supportano l'overload (Guida per programmatori C#)
Altre risorse
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Luglio 2008 |
Spostato l'operatore ?? all'esterno della categoria di assegnazione a seguito del suggerimento di un cliente. |
Correzione di errori nel contenuto. |