Compartilhar via


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

não verificado(x)

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

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)

Conceitos

C# Programming Guide