Compartilhar via


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

não verificado(x)

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#)

Conceitos

Guia de programação do C#