Operadores (guia de programação de C#)
No C#, um operador é um elemento de programa é aplicado a um ou mais operandos em uma expressão ou demonstrativo. Os operadores que usam um operando, como o operador de incremento (++) ou new, são chamados de Unário operadores. Os operadores que usam dois operandos, como, por exemplo, operadores aritméticos (+,-,*,/), são chamados de binário operadores. Um operador, o operador condicional (?:), usa três operandos e é o único ternário operador em C#.
A C# a seguinte demonstrativo contém um operador de unário único e um único operando. O operador de incremento, ++, que modifica o valor do operando y.
y++;
A C# a seguinte demonstrativo contém dois operadores binário , cada um com dois operandos. Atribuição do operador, =, tem avariávelde inteiro y e a expressão 2 + 3 como operandos. A expressão 2 + 3 si consiste o operador de adição e de dois operandos, 2 e 3.
y = 2 + 3;
Operadores, avaliação e precedência de operador
Um operando pode ser uma expressão válido de qualquer tamanho e pode ser composto de qualquer número de outras expressões. Em uma expressão que contém vários operadores, a ordem na qual os operadores são aplicados é determinada por a precedência deoperador, associatividadee parênteses.
Cada operador tem uma precedência definida. Uma expressão que contém vários operadores têm precedência de diferentes níveis, a precedência dos operadores determina a ordem na qual os operadores são avaliados. Por exemplo, a demonstrativo a seguir atribui 3 para n1.
n1 = 11 - 2 * 4;
A multiplicação é executada primeiro porque a multiplicação tem precedência sobre a subtração.
A tabela a seguir separa os operadores em categorias com base no tipo de operação que eles executam. As categorias são listadas na ordem de precedência.
Operadores primários
Expression |
Description |
---|---|
x.y |
Acesso deAssociado |
f(x) |
Método e invocação de delegado |
a[x] |
Acesso de array e indexador |
x++ |
Incremento de POST- |
x-- |
Decréscimo do POST- |
new T(...) |
Criação de objeto e o delegado |
newT(...){...} |
Criação do objeto com um inicializador. See Objeto e coleção inicializadores (guia de programação de C#). |
new {...} |
Inicializador de objeto de anônimo. See Tipos anônimos (guia de programação de C#). |
newT[...] |
Criação de matriz. See Arrays (C# Programming Guide). |
TypeOf(T) |
Obtenha o sistema.Tipo objeto de t |
check-(x) |
Avaliar a expressão no contextode marcada |
Avaliar a expressão no contextode desmarcado |
|
padrão (T) |
Obter o valor padrão do tipo t |
Delegar {} |
Anônimo de função (método anônimo) |
Operadores unários
Expression |
Description |
---|---|
+x |
Identidade |
-x |
Negação |
!x |
Negação lógica |
~x |
Negação bit a bit |
++x |
Incremento de pré- |
--x |
Decréscimo do Pre- |
(T)x |
Explicitamente converter x para o tipo t |
Operadores multiplicativos
Expression |
Description |
---|---|
Multiplicação |
|
Divisão |
|
Restante |
Operadores aditivos
Expression |
Description |
---|---|
x + y |
Além disso, concatenação de seqüência de caracteres, combinação de delegado |
x - y |
Subtração, remoção de delegado |
Operadores do SHIFT
Expression |
Description |
---|---|
x << y |
SHIFT esquerda |
x >> y |
Deslocar para direita |
Relacional e operadores de Tipo
Expression |
Description |
---|---|
x < y |
Menor que |
x > y |
Maior que |
x <= y |
Menor ou igual |
x >= y |
Maior ou igual |
x is T |
Retornar true se x for um T FALSO caso contrário |
x as T |
Retorno x digitado como t ou null se x não for um t |
Operadores de igualdade
Expression |
Description |
---|---|
x == y |
Igual |
x != y |
Não igual |
Operadores lógicos, condicionais e nulos
Category |
Expression |
Description |
---|---|---|
E lógico |
x & y |
Bit a bit de inteiros e booliano e lógico |
XOR lógico |
x ^ y |
XOR bit a bit de Integer, boolean XOR lógico |
OR lógico |
x | y |
Integer bit a bit ou booleano OR lógico |
Condicional E |
x && y |
Avalia y somente se x for true |
OU condicional |
x || y |
Avalia y somente se x for false |
A concentração nulo |
x ?? y |
Avalia a y se x for nulo, x contrário |
Conditional |
x ?: y: z |
Avalia a y se x for true, z se x for falsa |
Atribuição e operadores anônimos
Expression |
Description |
---|---|
Atribuição |
|
x op = y |
Atribuição de compostos. Oferece suporte a esses operadores: +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>= |
(T x) => y |
Anônimo de função (expressão lambda) |
Associatividade
Quando dois ou mais operadores tiverem a mesma precedência estão presentes em uma expressão, eles são avaliados com base na associação. Operadores de associação esquerda-são avaliadas na ordem da esquerda para a direita. Por exemplo, x * y / z é avaliado como (x * y) / z. Operadores de associação direita-são avaliadas na ordem da direita para esquerda. Por exemplo, o operador de atribuição é associativa à direita. Se não fosse, o código a seguir resultaria em um erro.
int a, b, c;
c = 1;
// The following two lines are equivalent.
a = b = c;
a = (b = c);
// The following line, which forces left associativity, causes an error.
//(a = b) = c;
Os operadores de atribuição e ooperador ternário(?:) são a associação à direita. Tudo outros operadores binário são deixados associativas.
Se os operadores em uma expressão são deixados associativa ou de associação à direita, os operandos de cada expressão são avaliados primeiro, da esquerda para a direita. Os exemplos a seguir ilustram a ordem de avaliação dos operadores e operandos.
Instrução |
Ordem de avaliação |
---|---|
a = b |
a, b = |
a = b + c |
a, b, c, +, = |
a = b + c * d |
a, b, c, d, *, +, = |
a = b * c + d |
a, b, c, *, d, +, = |
a = b - c + d |
a, b, c,-, d, +, = |
a += b -= c |
a, b, c, -=, += |
Adicionar parênteses
Você pode alterar a ordem imposta pelo operador precedência e associatividade usando parênteses. Por exemplo, 2 + 3 * 2 avalia 8, normalmente porque os operadores multiplicativos têm precedência sobre os operadores aditivos. No entanto, se você escrever a expressão como (2 + 3) * 2, a adição é avaliada antes da multiplicação e o resultado é 10. Os exemplos a seguir ilustram a ordem de avaliação em expressões de entre parênteses. Como nos exemplos anteriores, os operandos são avaliados antes que o operador é aplicado.
Instrução |
Ordem de avaliação |
---|---|
a = (b + c) * d |
a, b, c, +, d, *, = |
a = b - (c + d) |
a, b, c, d, +, -, = |
a = (b + c) * (d - e) |
a, b, c, +, d, e, -, *, = |
Operator Overloading
Você pode alterar o comportamento de operadores para as classes personalizadas e estruturas. Esse processo é conhecido como a sobrecarga deoperador. For more information, see Operadores sobrecarregável (guia de programação de C#).
Related Sections
For more information, see Palavras-chave de operador (referência de C#) and C# Operators.
Consulte também
Referência
Statements, Expressions, and Operators (C# Programming Guide)