I am a bit confused by the MSDN C# documentation which states that &,| are logical operators and && and || are conditional operators. I keep calling &&, ||, ! logical operators, so I am wrong?
No; hai ragione.
Vi sono numerosi errori di nomenclatura piccoli, per lo più non importanti nella documentazione MSDN; Ho cercato di tirarne fuori il maggior numero possibile, ma nei casi in cui non è egregiamente sbagliato e fuorviante, non è sempre un uso saggio del tempo. Vai alle specifiche se desideri una dichiarazione definitiva sul nome di una caratteristica di C #.
Quindi: l'autorità pertinente è la specifica C #, che afferma nella sezione 7.11:
The &, ^, and | operators are called the logical operators.
Quindi continua a suddividere ulteriormente gli operatori logici incorporati in operatori logici interi, enumerati, booleani e nullable-booleani. Esistono anche operatori logici definiti dall'utente; guarda le specifiche per i dettagli.
Nella sezione 7.12 abbiamo
The && and || operators are called the conditional logical operators. They are also called the “short-circuiting” logical operators.
Quindi tutti sono operatori logici . Alcuni di essi sono operatori logici condizionali .
Cosa rende condizionale gli operatori logici condizionali? Si potrebbe fare un'ipotesi plausibile perché è tipicamente usato nelle dichiarazioni condizionali ( if
) o espressioni condizionali ( ? :
). La vera ragione è data dalla specifica:
The && and || operators are conditional versions of the & and | operators: The operation x && y corresponds to the operation x & y, except that y is evaluated only if x is not false. The operation x || y corresponds to the operation x | y, except that y is evaluated only if x is not true.
Gli operatori logici condizionali sono così denominati perché l'operando della mano destra viene valutato condizionatamente a seconda del valore dell'operando della mano sinistra.
Possiamo vederlo in modo più vivido notando che gli operatori logici condizionali sono solo "zuccheri sintattici" per espressioni condizionali . x && y
è semplicemente un modo più piacevole di scrivere x ? y : false
e x || y
è semplicemente un modo più piacevole di scrivere x ? true : y
. Le espressioni logiche condizionali sono in realtà espressioni condizionali.
Esiste anche una forma definita dall'utente dell'operatore logico condizionale, ed è un po 'complicata. Vedi le specifiche per i dettagli.
Ulteriori letture, se questo argomento ti interessa: