Operadores (guia de programação do C#)
No C#, um operador é um elemento de programa que é aplicado a um ou mais operandos em uma expressão ou instrução.Operadores que usam um operando, como, por exemplo, o operador de incremento (++) ou new, são chamados de Unário operadores.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 operador Ternário em C#.
A instrução a seguir C# contém um operador unário único e um único operando.O operador de incremento, ++, modifica o valor do operando y.
y++;
A instrução a seguir C# contém dois operadores binários, cada um com dois operandos.O operador de atribuição, =, tem a variável integer y e a expressão 2 + 3 como operandos.A expressão 2 + 3 si consiste o operador de adição e dois operandos, 2 e 3.
y = 2 + 3;
Operadores, avaliação e precedência de operadores
Um operando pode ser uma expressão válida de qualquer tamanho, e ele 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 precedência de operadores, associatividadee parênteses.
Cada operador tem uma precedência definida.Em uma expressão que contém vários operadores que têm níveis diferentes de precedência, a precedência dos operadores determina a ordem na qual os operadores são avaliados.Por exemplo, a instrução a seguir atribui 3 para n1.
n1 = 11 - 2 * 4;
A multiplicação é executada primeiro porque multiplicação tem precedência sobre 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 |
Descrição |
---|---|
x.y |
Acesso de membro |
f(x) |
Invocação de método e o delegado |
a[x] |
Acesso de array e indexador |
x++ |
POST-Increment |
x-- |
POST-Decrement |
new T(...) |
Criação de objeto e o delegado |
newT(...){...} |
Criação do objeto com um inicializador.Consulte Objeto e coleção inicializadores (guia de programação do C#). |
new {...} |
Inicializador de objeto anônimos.Consulte Tipos anônimos (guia de programação do C#). |
newT[...] |
Criação de matriz.Consulte Matrizes (guia de programação do C#). |
TypeOf(T) |
Obter o objeto System. Type para t |
check-(x) |
Avaliar a expressão em contexto marcada |
Avaliar a expressão em contexto desmarcado |
|
padrão (T) |
Obter o valor padrão do tipo t |
Delegar {} |
Anônimo funcione (método anônimo) |
Operadores unários
Expression |
Descrição |
---|---|
+x |
Identidade |
-x |
Negação |
!x |
Negação lógica |
~x |
Negação bit a bit |
++x |
Pre-Increment |
--x |
Pre-Decrement |
(T)x |
Converter explicitamente x para o tipo t |
Operadores multiplicativos
Expression |
Descrição |
---|---|
Multiplicação |
|
Divisão |
|
Restante |
Operadores aditivos
Expression |
Descrição |
---|---|
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 |
Descrição |
---|---|
x << y |
SHIFT esquerda |
x >> y |
Deslocar para direita |
Relacional e digite operadores
Expression |
Descrição |
---|---|
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 |
x as T |
Retorno x digitado como t ou nulo se x não for um t |
Operadores de igualdade
Expression |
Descrição |
---|---|
x == y |
Igual |
x != y |
Não igual |
Operadores lógicos, condicionais e nulos
<strong>Categoria</strong> |
Expression |
Descrição |
---|---|---|
E lógico |
x & y |
Integer bit a bit E Boolean 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 |
AND condicional |
x && y |
Avalia y somente se x for true |
OR condicional |
x || y |
Avalia y somente se x for false |
Concentração nulo |
x ?? y |
Avaliado como y se x for nulo, a x caso contrário |
Condicional |
x ?: y : z |
Avalia a y se x for true, z, se x for falsa |
Atribuição e operadores anônimos
Expression |
Descrição |
---|---|
Atribuição |
|
x op = y |
Atribuição composta.Supports these operators: +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>= |
(T x) => y |
Função anônima (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 associativos à esquerda são avaliadas na ordem da esquerda para a direita.Por exemplo, x * y / z é avaliado como (x * y) / z.Operadores associativos à direita são avaliadas na ordem da direita para esquerda.Por exemplo, o operador de atribuição é associativo à direita.Se não fosse, o código a seguir resultaria em 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 o operador Ternário (?:) são associativa à direita.Todos os outros operadores binários são deixados associativas.
Se os operadores em uma expressão ficarem associativa ou de associação à direita, operandos de todas as expressões 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 por precedência e associatividade usando parênteses.Por exemplo, 2 + 3 * 2 normalmente é avaliada como 8, porque os operadores multiplicativos têm precedência sobre 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 entre parênteses.Como nos exemplos anteriores, os operandos são avaliados antes de aplicar o operador.
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, -, *, = |
Operador de sobrecarga
Você pode alterar o comportamento de operadores para classes personalizadas e estruturas.Esse processo é conhecido como a sobrecarga de operador.Para obter mais informações, consulte Operadores que pode ser sobrecarregados (guia de programação do C#).
Seções relacionadas
Para obter mais informações, consulte Palavras-chave de operador (referência de C#) e Operadores de C#.
Consulte também
Referência
Instruções, expressões e operadores (guia de programação do C#)