C sharp/Operatori: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Distinzione tra operatori logici e operatori bit a bit (che sono concettualmente diversi in C#)
Correzioni varie (operatore --> operando)
Riga 1:
{{C sharp}}
Gli operatori in C# (e leil loreloro ordine di precedenza) sono molto riassimilabili aglia operatoriquelli di altri linguaggi della famigli del [[C]].
 
Similmente al C++, le classi (che saranno trattate in seguito) possono effettuare quello che viene chiamato l<nowiki>'</nowiki>''overlead'', cioè ridefinire il comportamento degli operatori con gli oggetti in questione.
Riga 19:
|<code>a * b</code>||<code>a</code> ''per'' <code>b</code>||L'operatore binario <code>*</code> restituisce il [[w:prodotto|prodotto]] dei due argomenti.
|-
|<code>a / b</code>||<code>a</code> ''diviso'' <code>b</code> ||L'operatore binario <code>/</code> restituisce il [[w:rapporto|rapporto]] tra i due argomenti. Se entrambi gli operatorioperandi sono interi, il risultato sarà anch'esso un numero intero (verrà troncata la parte decimale)
|-
|<code>a % b</code>||<code>a</code> ''modulo'' <code>b</code>||L'operatore binario <code>%</code> opera solo su numeri interi. Restituisce il [[w:resto|resto]] della divisione intera degli argomenti.
Riga 42:
 
==Operatori logici==
IA seguentidifferenza del C e C++, gli operatori logici operanodel C# possono lavorare solo su valorioperandi booleanidi otipo interibooleano.
{| {{prettytable}}
! Esempio || Spiegazione
|-
|<code>a && b || L'operatore binario <code>&&</code> lavora solo su operatori booleani. Valutavaluta prima il valore del primo argomento. Se il suo valore è ''false'', restituisce ''false'' (questo perché falso è l'elemento assorbente della congiunzione, quindi qualunque sia il valore del secondo operatoreoperando, il risultato sarà ''false''); altrimenti, valuta anche il secondo parametro e restituisce la congiunzione tra i due. Questa tecnica è chiamata ''valutazione short-circuit''
|-
|<code>a <code><nowiki>||</nowiki></code> b ||L'operatore binario <code><nowiki>||</nowiki></code> lavora solo su operatori booleani. Valutavaluta prima il valore del primo argomento. Se il suo valore è ''true'', restituisce ''true'' (questo perché vero è l'elemento assorbente della disgiunzione, quindi qualunque sia il valore del secondo operatoreoperando, il risultato sarà ''true''); altrimenti, valuta anche il secondo parametro e restituisce la disgiunzione tra i due.
|-
| <code>!a</code> || L'operatore unario <code>!</code> lavora su un solo valore booleano e ne restituisce la negazione (non).
Riga 54:
 
==Operatori bit a bit==
I seguenti operatori logicibit operanoa bit lavorano su valorioperandi booleani o interi.
{| {{prettytable}}
! Esempio || Spiegazione
|-
|<code>a & b</code> (''bitwise and'') || L'operatore binario <code>&</code> valuevaluta entrambi gli operatorioperandi e ne restituisce la congiuzione logica (et) dei loro valori. Se gli operatorioperandi sono interi, la congiunzione è fatta a livello di bit:
<source lang=csharp>
bool a = true;
Riga 69:
</source>
|-
|<code>a <nowiki>|</nowiki> b</code> || L'operatore binario <nowiki>|</nowiki> valuta entrambi gli operatorioperandi e ne restituisce la disgiunzione logica (vel) dei loro valori. Se gli operatorioperandi sono interi, la disgiunzione è fatta a livello di bit:
<source lang=csharp>
bool a = true;
Riga 80:
</source>
|-
|<code>a <nowiki>^</nowiki> b</code> || L'operatore binario <code>^</code> valuta entrambi gli operatorioperandi e ne restituisce la disgiunzione non inclusiva logica (aut) dei loro valori. Se gli operatorioperandi sono interi, la disgiunzione è fatta a livello di bit:
<source lang=csharp>
bool a = false;
Riga 91:
</source>
|-
|<code>~a</code> || L'operatore unario <code>~</code> lavora su un solo parametro che può essere booleano o intero. Se glil'operando operatoriè sono interiintero, la negazione è fatta a livello di bit:
<source lang=csharp>
bool a = false;
Riga 148:
! Esempio || Spiegazione
|-
|<code>a = b</code> || L'operatore <code>=</code> assegna il valore dell'operatoreoperando di destra al primo argomento.
|-
|<code>a = b = c</code>|| Uguale a <code>a = (b = c)</code>. Si possono comporre le assegnazioni. È come scrivere <code>b=c</code> e poi <code>a=b</code>. Si possono fare anche calcoli più complessi: