C# İfade Kavramı

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)