C#İşleçler (C# başvuru)C# operators (C# reference)

C#Yerleşik türler tarafından desteklenen bir dizi işleç sağlar.C# provides a number of operators supported by the built-in types. Örneğin, Aritmetik işleçler sayısal Işlenenler ve Boole mantıksal işleçleri bool işlenenleri olan mantıksal işlemleri gerçekleştirir.For example, arithmetic operators perform arithmetic operations with numeric operands and Boolean logical operators perform logical operations with the bool operands. Bazı işleçler aşırıyüklenebilir.Certain operators can be overloaded. İşleç aşırı yüklemesi ile, Kullanıcı tanımlı bir türün işlenenleri için işleç davranışını belirtebilirsiniz.With operator overloading, you can specify the operator behavior for the operands of a user-defined type.

Bir ifadede, işleç önceliği ve ilişkilendirilebilirliği, işlemlerin gerçekleştirileceği sırayı belirlemektir.In an expression, operator precedence and associativity determine the order in which the operations are performed. İşleç önceliği ve ilişkilendirilebilirliği tarafından uygulanan değerlendirmenin sırasını değiştirmek için ayraçları kullanabilirsiniz.You can use parentheses to change the order of evaluation imposed by operator precedence and associativity.

İşleç önceliğiOperator precedence

Birden çok işleç içeren bir ifadede, daha yüksek önceliğe sahip işleçler, daha düşük önceliğe sahip işleçlerden önce değerlendirilir.In an expression with multiple operators, the operators with higher precedence are evaluated before the operators with lower precedence. Aşağıdaki örnekte, daha yüksek önceliğe sahip olduğu için çarpma ilk olarak gerçekleştirilir:In the following example, the multiplication is performed first because it has higher precedence than addition:

var a = 2 + 2 * 2;
Console.WriteLine(a); //  output: 6

İşleç önceliğine göre uygulanan değerlendirmenin sırasını değiştirmek için ayraçları kullanın:Use parentheses to change the order of evaluation imposed by operator precedence:

var a = (2 + 2) * 2;
Console.WriteLine(a); //  output: 8

Aşağıdaki tabloda en düşük önceliğe C# göre başlayan işleçler listelenmektedir.The following table lists the C# operators starting with the highest precedence to the lowest. Her satır içindeki işleçler aynı önceliğe sahiptir.The operators within each row have the same precedence.

İşleçlerOperators Kategori veya adCategory or name
x. y, x?. y, x? [ y], f (x), a[i], x + +, x--, New, typeof, Checked, denetimsiz, Default, NameOf, Delegate, sizeof, stackalloc, x-> yx.y, x?.y, x?[y], f(x), a[i], x++, x--, new, typeof, checked, unchecked, default, nameof, delegate, sizeof, stackalloc, x->y BirincilPrimary
+ x, -x, !x, ~ x, + + x, --x, ^ x, (t) x, await, & x, * x, true ve false+x, -x, !x, ~x, ++x, --x, ^x, (T)x, await, &x, *x, true and false LiUnary
x.. Izx..y AralıkRange
x * y, x/y, x% yx * y, x / y, x % y ÇarpmaMultiplicative
x + y, x – yx + y, x – y MsalAdditive
x << y, x > > yx << y, x >> y KarakterShift
x < y, x > y, x <= y, x > = y, , asx < y, x > y, x <= y, x >= y, is, as İlişkisel ve tür-testRelational and type-testing
x = = y, x! = yx == y, x != y EşitlikEquality
x & y Boolean MANTıKSAL ve veya BIT düzeyinde mantıksal veBoolean logical AND or bitwise logical AND
x ^ y Boole MANTıKSAL XOR veya BIT düzeyinde mantıksal XORBoolean logical XOR or bitwise logical XOR
x | y Boolean MANTıKSAL veya veya BIT düzeyinde mantıksal orBoolean logical OR or bitwise logical OR
x & & yx && y Koşullu VEConditional AND
x | | yx || y Koşullu VEYAConditional OR
x?? Izx ?? y Null birleşim işleciNull-coalescing operator
,? t: fc ? t : f Koşullu işleçConditional operator
x = y, x + = y, x-= y, x * = y, x /= y, x% = y, x & = y, x |= y, x ^ =y, x < < = y, x > > = y, x?? = y, =>x = y, x += y, x -= y, x *= y, x /= y, x %= y, x &= y, x |= y, x ^= y, x <<= y, x >>= y, x ??= y, => Atama ve lambda bildirimiAssignment and lambda declaration

Operatör ilişkilendirilebilirliğiOperator associativity

İşleçler aynı önceliğe sahip olduğunda, işleçlerin ilişkilendirilebilirliği, işlemlerin gerçekleştirilme sırasını belirler:When operators have the same precedence, associativity of the operators determines the order in which the operations are performed:

  • Sola ilişkilendirilebilir işleçler, soldan sağa doğru sırayla değerlendirilir.Left-associative operators are evaluated in order from left to right. Atama işleçleri ve null birleşim işleçlerihariç, tüm ikili işleçler sola ilişkilendirilebilir.Except for the assignment operators and the null-coalescing operators, all binary operators are left-associative. Örneğin, a + b - c (a + b) - colarak değerlendirilir.For example, a + b - c is evaluated as (a + b) - c.
  • Sağdan ilişkilendirilebilir işleçler, sağdan sola sırayla değerlendirilir.Right-associative operators are evaluated in order from right to left. Atama işleçleri, null birleşim işleçleri ve koşullu işleç ?: , doğru ilişkilendirilebilir.The assignment operators, the null-coalescing operators, and the conditional operator ?: are right-associative. Örneğin, x = y = z x = (y = z)olarak değerlendirilir.For example, x = y = z is evaluated as x = (y = z).

İşleç ilişkilendirilebilirliği tarafından uygulanan değerlendirmenin sırasını değiştirmek için ayraçları kullanın:Use parentheses to change the order of evaluation imposed by operator associativity:

int a = 13 / 5 / 2;
int b = 13 / (5 / 2);
Console.WriteLine($"a = {a}, b = {b}");  // output: a = 1, b = 6

İşlenen değerlendirmesiOperand evaluation

Operatör önceliği ve ilişkilendirilebilirliği ile ilgisiz, bir ifadede işlenen işlenenleri soldan sağa değerlendirilir.Unrelated to operator precedence and associativity, operands in an expression are evaluated from left to right. Aşağıdaki örneklerde, işleçleri ve işlenenleri değerlendirilen sıra gösterilmektedir:The following examples demonstrate the order in which operators and operands are evaluated:

İfadeExpression Değerlendirme sırasıOrder of evaluation
a + b a, b, +a, b, +
a + b * c 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, *

Genellikle, tüm işleç işlenenleri değerlendirilir.Typically, all operator operands are evaluated. Ancak, bazı işleçler işlenenleri koşullu olarak değerlendirir.However, some operators evaluate operands conditionally. Diğer bir deyişle, bu tür bir işlecin en sol işleneninin değeri, (veya hangi) diğer işlenenleri değerlendirileceğini tanımlar.That is, the value of the leftmost operand of such an operator defines if (or which) other operands should be evaluated. Bu işleçler, Koşullu mantıksal ve (&&) ve ya da (||) işleçleridir, null birleşim işleçleri ?? ve ??=, null koşullu işleçler ?. ve ?[]ve koşullu işleç ?:.These operators are the conditional logical AND (&&) and OR (||) operators, the null-coalescing operators ?? and ??=, the null-conditional operators ?. and ?[], and the conditional operator ?:. Daha fazla bilgi için her işlecin açıklamasına bakın.For more information, see the description of each operator.

C# dili belirtimiC# language specification

Daha fazla bilgi için, C# dil belirtiminin işleçler bölümüne bakın.For more information, see the Operators section of the C# language specification.

Ayrıca bkz.See also