Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
C# bir dizi işleç sağlar. Bunların çoğu yerleşik türler tarafından desteklenir ve bu türlerin değerleriyle temel işlemleri gerçekleştirmenize olanak sağlar. Bu işleçler aşağıdaki grupları içerir:
- Sayısal işlenenlerle aritmetik işlemler gerçekleştiren aritmetik işleçler
- Sayısal işlenenleri karşılaştıran karşılaştırma işleçleri
-
İşlenenlerle mantıksal işlemler gerçekleştiren Boole
boolmantıksal işleçleri - Tam sayı türlerinin işlenenleriyle bit düzeyinde veya shift işlemleri gerçekleştiren bit düzeyinde ve vardiya işleçleri
- İşlenenlerinin eşit olup olmadığını denetleyen eşitlik işleçleri
Genellikle, bu işleçleri aşırı yükleyebilir , yani kullanıcı tanımlı bir türün işlenenleri için işleç davranışını belirtebilirsiniz.
En basit C# ifadeleri değişmez değerler (örneğin, tamsayı ve gerçek sayılar) ve değişkenlerin adlarıdır. İşleçleri kullanarak bunları karmaşık ifadeler halinde birleştirebilirsiniz. İşleç önceliği ve ilişkilendirme , bir ifadedeki işlemlerin hangi sırada gerçekleştirildiğini belirler. İşleç önceliği ve ilişkilendirilebilirlik tarafından uygulanan değerlendirme sırasını değiştirmek için parantezleri kullanabilirsiniz.
Aşağıdaki kodda, atamaların sağ tarafında ifade örnekleri verilmiştir:
int a, b, c;
a = 7;
b = a;
c = b++;
b = a + b * c;
c = a >= 100 ? b : c / 10;
a = (int)Math.Sqrt(b * b + c * c);
string s = "String literal";
char l = s[s.Length - 1];
List<int> numbers = [..collection];
b = numbers.FindLast(n => n > 1);
Genellikle, bir ifade bir sonuç üretir ve başka bir ifadeye eklenebilir.
void Yöntem çağrısı, sonuç üretmeyen bir ifade örneğidir. Aşağıdaki örnekte gösterildiği gibi yalnızca deyim olarak kullanılabilir:
Console.WriteLine("Hello, world!");
C# tarafından sunulan diğer ifade türleri şunlardır:
Biçimlendirilmiş dizeler oluşturmak için uygun söz dizimi sağlayan ilişkilendirilmiş dize ifadeleri:
var r = 2.3; var message = $"The area of a circle with radius {r} is {Math.PI * r * r:F3}."; Console.WriteLine(message); // Output: // The area of a circle with radius 2.3 is 16.619.Anonim işlevler oluşturmanıza olanak sağlayan Lambda ifadeleri:
int[] numbers = { 2, 3, 4, 5 }; var maximumSquare = numbers.Max(x => x * x); Console.WriteLine(maximumSquare); // Output: // 25Sorgu özelliklerini doğrudan C# dilinde kullanmanıza olanak sağlayan sorgu ifadeleri:
int[] scores = { 90, 97, 78, 68, 85 }; IEnumerable<int> highScoresQuery = from score in scores where score > 80 orderby score descending select score; Console.WriteLine(string.Join(" ", highScoresQuery)); // Output: // 97 90 85
Bir yöntem, oluşturucu, özellik, dizin oluşturucu veya sonlandırıcı için kısa bir tanım sağlamak üzere ifade gövdesi tanımı kullanabilirsiniz.
İşleç önceliği
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. Aşağıdaki örnekte, çarpma ilk olarak gerçekleştirilir çünkü toplamadan daha yüksek önceliğe sahiptir:
var a = 2 + 2 * 2;
Console.WriteLine(a); // output: 6
İşleç önceliği tarafından uygulanan değerlendirme sırasını değiştirmek için parantezleri kullanın:
var a = (2 + 2) * 2;
Console.WriteLine(a); // output: 8
Aşağıdaki tabloda, en yüksek öncelik en düşük olandan başlayarak C# işleçleri listelenmiştir. Her satırdaki işleçler aynı önceliğe sahiptir.
| Operatörler | Kategori veya ad |
|---|---|
x.y, f(x), a[i], x?.y, , x?[y]x++, x--, x!, new, typeof, checked, unchecked, default, nameof, delegate, sizeof, stackalloc, x-y> |
Birincil |
| +x, -x, !x, ~x, ++x, --x, ^x, (T)x, await, &x, *x, true ve false | Tekil |
| x..y | Aralık |
| switch, with |
switch ve with ifadeleri |
| x * y, x / y, x % y | Çarpan |
| x + y, x – y | Katkı |
| x << y, x >> y, x >>> y | Vardiya |
| x < y, x > y, x <= y, x >= y, is, as | İlişkisel ve tür testleri |
| x == y, x != y | Eşitlik |
x & y |
Boole mantıksal AND veya bit düzeyinde mantıksal AND |
x ^ y |
Boole mantıksal XOR veya bit düzeyinde mantıksal XOR |
x | y |
Boole mantıksal VEYA veya bit düzeyinde mantıksal OR |
| X & & Y | Koşullu VE |
| x || y | Koşullu VEYA |
| x ?? y | Null birleşim işleci |
| c ? t : f | Koşullu işleç |
| 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 bildirimi |
Mantıksal desen birleştiricilerinin önceliği hakkında bilgi için Desenler makalesinin Öncelik ve mantıksal desenleri denetleme sırasıbölümüne bakın.
İşleç ilişkilendirmesi
İşleçler aynı önceliğe sahip olduğunda, işleçlerin ilişkilendirilmesi işlemlerin hangi sırada gerçekleştirileceğini belirler:
-
Sol ilişkilendirici işleçler soldan sağa doğru sırayla değerlendirilir.
Atama işleçleri ve null birleşim işleçleri dışında, tüm ikili işleçler sol ilişkilendirilir. Örneğin,
a + b - colarak(a + b) - cdeğerlendirilir. -
Sağ ilişkilendirici işleçler sağdan sola doğru değerlendirilir. Atama işleçleri, null birleşim işleçleri, lambda'lar ve koşullu işleçler
?:doğru ilişkilendirilir. Örneğin,x = y = zolarakx = (y = z)değerlendirilir.
Önemli
formunun P?.A0?.A1ifadesinde ise Pnull, ne A1 de A0 değerlendirilir. Benzer şekilde, formunun P?.A0.A1A0 bir ifadesinde null olduğunda P değerlendirilmediğinden, değeri de değildirA0.A1. Daha fazla ayrıntı için C# dil belirtimine bakın.
İşleç ilişkilendirmesi tarafından uygulanan değerlendirme sırasını değiştirmek için parantezleri kullanın:
int a = 13 / 5 / 2;
int b = 13 / (5 / 2);
Console.WriteLine($"a = {a}, b = {b}"); // output: a = 1, b = 6
İşlenen değerlendirmesi
İşleç önceliği ve ilişkisellik ile ilişkili olmayan bir ifadedeki işlenenler soldan sağa değerlendirilir. Aşağıdaki örneklerde işleçlerin ve işlenenlerin değerlendirilme sırası gösterilmektedir:
| İfade | Değerlendirme sırası |
|---|---|
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, * |
Genellikle tüm işleç işlenenleri değerlendirilir. Ancak, bazı işleçler işlenenleri koşullu olarak değerlendirir. Başka bir deyişle, böyle bir işlecin en soldaki işleneninin değeri, diğer işlenenlerin değerlendirilip değerlendirilmeydiğini (veya hangisini) tanımlar. Bu işleçler koşullu mantıksal AND (&&) ve OR (||)işleçleri, null birleşim işleçleri ?? ve ??=, null koşullu işleçler ve ?[]ve koşullu işleçlerdir?.?:. Daha fazla bilgi için her işlecin açıklamasına bakın.
C# dil belirtimi
Daha fazla bilgi için C# dil belirtimininaşağıdaki bölümlerine bakın: