C#’ta ifadeler operand ve operatör adı verilen iki elementten oluşur. Bir ifadenin operatörleri, operandlara hangi operasyonların uygulanacağını gösterir. Operatör’lere örnek olarak; +, -, *,/, ve new anahtar kelimesi gösterilebilir. Operand’lara örnek olarak ise; alanlar (fields), yerel değişkenler ve ifadeler gösterilebilir.
Bir ifade birden fazla operatör içeriyorsa, hangi operatörün işlenileceğine o operatörün öncelik sırası karar verir. Örneğin; X + Y * Z ifadesi X + (Y * Z) olarak işlenir * (çarpma) operatörü + (toplama) operatörüne göre daha önceliklidir.
Önemli: Öncelik sırası hangi operatörlerin hangi sıra ile işleneceğine karar verir. Fakat hangi operandın önce işleneceğine karar vermez. Operand’lar soldan sağa işlenir periyodik olarak. Yukarıdaki örnekte, önce X hesaplanıldı, sonra Y, sonra Z, sonra çarpma işlemi yerine getirildi, sonra da toplama işlemi. X’in Y’den önce hesaplanmasının nedeni solda olması, çarpma işleminin toplama işleminden önce gerçekleşmesinin nedeni önceliğinin yüksek olmasıdır.
Bir çok operatör aşırı yüklenebilir (Overloading). Operatör yüklemesi, kullanıcı tanımlı operatör işlemelerinde spesifik işlemler yapılmasına olanak tanır.
Aşağıdaki tablo, C# operatörlerini yüksek öncelikten düşük önceliğe göre listeler. Aynı kategorideki operatörler eşit önceliğe sahiptir.
Kategori | İfade | Açıklama |
Birincil | x.m | Üye erişimi |
Birincil | x(…) | Metod ve delegate tanımlama |
Birincil | x[…] | Dizi ve indexer erişimi |
Birincil | x++ | Öncelikli arttırma |
Birincil | x– | Öncelikli azaltma |
Birincil | new T(…) | Nesne ve delegate oluşturma |
Birincil | new T(…){…} | Kullanıma hazır nesne oluşturma |
Birincil | new {…} | Anonymus nesne kullanımı |
Birincil | new T[…] | Dizi oluşturma |
Birincil | typeof(T) | T için mevcut System.Type tipi |
Birincil | checked(x) | İşaretlenmiş konuda hesaplanan ifade |
Birincil | unchecked(x) | İşaretlenmemiş konuda hesaplanan ifade |
Birincil | default(T) | T tipinin mevcut varsayılan değeri |
Birincil | delegate {…} | Anonymus fonksiyon (Anonymus metod) |
Tekil | +x | Özdeşlik |
Tekil | -x | Değil |
Tekil | !x | Lojik değil (Not) |
Tekil | ~x | Bit bit değil (~x = –x-1) |
Tekil | ++x | Ön arttırma |
Tekil | –x | Ön azaltma |
Tekil | (T)x | X’i açık olarak T tipinde çevirme |
Çoğulsal | x * y | Çarpma |
Çoğulsal | x / y | Bölme |
Çoğulsal | x % y | Mod (kalan) |
Eklemeli | x + y | Ekleme, string birleştirme, delegate birleşimi |
Eklemeli | x – y | Çıkarma, delegate uzaklaştırma |
Öteleme | x << y | Sola öteleme |
Öteleme | x >> y | Sağa öteleme |
İlişkisel ve tip testi | x < y | Daha küçük |
İlişkisel ve tip testi | x > y | Daha büyük |
İlişkisel ve tip testi | x <= y | Küçük veya eşit |
İlişkisel ve tip testi | x >= y | Büyük veya eşit |
İlişkisel ve tip testi | x is T | Eğer x, bir T ise true döner, değilse false |
İlişkisel ve tip testi | x as T | Eğer x, bir T tipi ise true döner, değilse false |
Eşitlik | x == y | Eşittir |
Eşitlik | x != y | Eşit değil |
Lojik AND | x & y | Bit bit lojik olarak AND işlemi |
Lojik XOR | x ^ y | Bit bit lojik olarak XOR işlemi |
Lojik OR | x | y | Bit bit lojik olarak OR işlemi |
Koşullu AND | x && y | Eğer x true ise y’yi hesaplar |
Koşullu OR | x || y | Eğer x false ise y’yi hesaplar |
Null Kaynaşma | X ?? y | Eğer x null ise y’yi hesapla, değilse x’i hesapla |
Koşullu | x ? y : z | Eğer x true ise y’yi hesapla, x false ise z’yi hesapla |
Atama ve anonymous fonksiyonlar | x = y | Atama |
Atama ve anonymous fonksiyonlar | x op= y | Bileşik atama. Destekleyen operatörler: *= /= %= += -= <<= >>= &= ^= |= |
Atama ve anonymous fonksiyonlar | (T x) => y | Anonymus fonksiyonlar (lambda expression) |