Anasayfa / C# / CONSOLE APPS / C# Operatörler

C# Operatörler

Web sitemizin C# eğitim serisinde değişkenleri ve veri tiplerini “içinde veri sakladığımız etiketli kutular” olarak tanımlamıştık. Peki, bu kutuların içindeki verilerle nasıl işlem yapacağız? İki sayıyı nasıl toplayacak, iki metni nasıl birleştirecek veya kullanıcının girdiği şifrenin doğruluğunu nasıl kontrol edeceğiz? İşte tam bu noktada devreye Operatörler (Operators) giriyor.

Operatörler, programlama dillerinde değişkenler ve değerler üzerinde matematiksel, mantıksal veya karşılaştırma işlemleri yapmamızı sağlayan özel sembollerdir. Bu rehberimizde, C# dilinde en çok kullanılan operatör türlerini günlük hayattan örneklerle öğrenecek ve en güncel C# özelliklerine de göz atarak modern yazılım dünyasına ayak uyduracağız.


1. Aritmetik Operatörler (Arithmetic Operators)

Günlük hayattaki matematikte kullandığımız temel işlemlerin programlamadaki karşılığıdır. Sayısal veri tipleri (int, double, decimal vb.) üzerinde matematiksel hesaplamalar yapmak için kullanılırlar.

  • Toplama (+): İki sayıyı toplar. (Ayrıca metinleri yan yana birleştirmek için de kullanılır).
  • Çikarma (-): Bir sayıdan diğerini çıkarır.
  • Çarpma (*): İki sayıyı çarpar.
  • Bölme (/): Bir sayıyı diğerine böler.
  • Mod Alma (%): Bir sayının diğerine bölümünden “kalanı” verir. Özellikle bir sayının tek mi çift mi olduğunu bulmak için çok sık kullanılır.

Örnek Kod:

int sayi1 = 20;
int sayi2 = 6;

Console.WriteLine($"Toplama: {sayi1 + sayi2}"); // Çıktı: 26
Console.WriteLine($"Çıkarma: {sayi1 - sayi2}"); // Çıktı: 14
Console.WriteLine($"Çarpma: {sayi1 * sayi2}");  // Çıktı: 120
Console.WriteLine($"Bölme: {sayi1 / sayi2}");   // Çıktı: 3 (İkisi de int olduğu için küsürat atılır)
Console.WriteLine($"Mod Alma: {sayi1 % sayi2}");// Çıktı: 2 (20'nin 6'ya bölümünden kalan 2'dir)

// Metinlerde (String) Toplama Operatörü
string isim = "Ali";
string soyisim = "Yılmaz";
Console.WriteLine(isim + " " + soyisim); // Çıktı: Ali Yılmaz


2. Atama Operatörleri (Assignment Operators)

Atama operatörleri, sağ taraftaki bir değeri veya işlemin sonucunu, sol taraftaki değişkene kaydetmek (atamak) için kullanılır.

  • Eşittir (=): C# dilinde tek eşittir işareti “matematiksel eşitlik” anlamına gelmez. Sağdaki değeri soldaki kutuya koyar.
  • Toplayarak Atama (+=): Soldaki değişkenin üzerine sağdaki değeri ekler. (a += b aslında a = a + b işleminin kısa halidir).
  • Çıkararak/Çarparak/Bölerek Atama (-=, *=, /=): Aynı mantıkla matematiksel işlemi yapıp sonucu tekrar aynı değişkene kaydeder.

Modern C# 14 Yeniliği: Geçmişte a += b yazdığınızda bilgisayar bunu mecburen a = a + b olarak arka planda genişletirdi. Ancak en güncel C# 14 sürümü ile birlikte, bir veri tipi sadece + operatörünü değil, doğrudan += ve -= gibi birleşik atama operatörlerini de kendi içinde özel olarak tanımlayabilme (user-defined compound assignment operators) yeteneğine kavuşmuştur. Bu da performansı ve esnekliği artıran modern bir özelliktir.

Örnek Kod:

int bakiye = 100; // Eşittir (=) ile 100 değerini bakiye değişkenine atadık.

bakiye += 50; // bakiye'nin üzerine 50 ekle ve kaydet. Yeni bakiye: 150
bakiye -= 20; // bakiye'den 20 çıkar ve kaydet. Yeni bakiye: 130

Console.WriteLine($"Güncel Bakiyeniz: {bakiye}");


3. İlişkisel ve Karşılaştırma Operatörleri (Relational Operators)

İki değeri birbirleriyle karşılaştırmak için kullanılırlar. İlişkisel operatörlerin sonucu her zaman mantıksal bir değer olan bool (true veya false) döndürür. Bir sonraki derste öğreneceğimiz if-else (koşul) yapılarının kalbini oluştururlar.

  • Eşit mi? (==): İki değer birbirine eşitse true, değilse false döndürür.
  • Eşit Değil mi? (!=): İki değer birbirinden farklıysa true döndürür.
  • Büyüktür (>) / Küçüktür (<): Sol tarafın sağ taraftan büyük/küçük olma durumunu kontrol eder.
  • Büyük Eşittir (>=) / Küçük Eşittir (<=): Eşitlik veya büyüklük/küçüklük durumunu kontrol eder.

Örnek Kod:

int girisYasi = 18;
int istenenYas = 18;

bool resitMi = girisYasi >= istenenYas; // 18, 18'e büyük veya eşit mi? (Evet - true)
bool hataliMi = girisYasi != istenenYas; // 18, 18'e eşit değil mi? (Hayır - false)

Console.WriteLine($"Kullanıcı Reşit mi? : {resitMi}");


4. Mantıksal Operatörler (Logical Operators)

Birden fazla karşılaştırma veya koşulu birbirine bağlamak için kullanılır.

  • VE Operatörü (&&): Birleştirdiği koşulların tamamı doğru (true) ise sonuç true olur. Bir tanesi bile yanlışsa sonuç false çıkar.
  • VEYA Operatörü (||): Birleştirdiği koşulların sadece bir tanesinin doğru (true) olması, sonucun true çıkması için yeterlidir.
  • DEĞİL Operatörü (!): Bir mantıksal değerin tam tersini alır. true ise false yapar.

Örnek Kod:

string kullaniciAdi = "admin";
string sifre = "1234";

// VE (&&) kullanımı: Sisteme giriş için hem adın hem şifrenin DOĞRU olması şarttır.
bool girisBasarili = (kullaniciAdi == "admin" && sifre == "1234");
Console.WriteLine($"Giriş Başarılı mı? {girisBasarili}"); // Çıktı: true

// VEYA (||) kullanımı: İndirim kazanmak için öğrenci olmak VEYA 65 yaş üstü olmak yeterlidir.
bool ogrenciMi = false;
int yas = 70;
bool indirimHakkiVar = (ogrenciMi == true || yas >= 65);
Console.WriteLine($"İndirim uygulandı mı? {indirimHakkiVar}"); // Çıktı: true


5. Tekli (Unary) Operatörler: Artırma ve Azaltma

Değişkenlerin değerini çok hızlı bir şekilde 1 artırmak veya 1 azaltmak için kullanılırlar. Özellikle döngülerde (örneğin for döngüsü) sayaç olarak çok sık karşımıza çıkarlar.

  • Artırma (++): Değeri 1 artırır.
  • Azaltma (--): Değeri 1 azaltır.

Modern C# 14 Yeniliği: Eskiden sadece sistemin tanıdığı standart sayılarda kullandığımız bu tekli operatörler, C# 14 ile birlikte geliştiriciler tarafından kendi oluşturdukları özel tipler (struct/class) için de özel artırma (++) ve azaltma (--) operatörü (custom increment/decrement operators) olarak tanımlanabilmektedir.

Örnek Kod:

int skor = 0;
skor++; // skoru 1 artır. Yeni skor: 1
skor++; // skoru 1 artır. Yeni skor: 2
skor--; // skoru 1 azalt. Yeni skor: 1

Console.WriteLine($"Güncel Oyun Skoru: {skor}");


6. Null-Koşullu Atama (Null-Conditional Assignment) – C# 14’ün Yıldızı

Yazılım geliştirirken en çok aldığımız hatalardan biri, içi boş (null) olan bir değişkene işlem yapmaya çalışmaktır. Modern C# sürümleri bunu önlemek için harika araçlar sunar.

Eskiden bir değişkenin içinin dolu olup olmadığını uzun if bloklarıyla kontrol ederdik. Ancak Microsoft’un yayımladığı C# 14 sürümü ile programlama dünyasına çok güçlü yeni bir operatör eklendi: Null-koşullu atama operatörü (?.=).

Bu operatör sayesinde, bir atama yapmadan önce sol tarafın null olup olmadığını tek bir sembolle kontrol edebilirsiniz. Eşitliğin sağ tarafı, yalnızca sol taraf null değilse hesaplanıp atanır; eğer sol taraf null ise sağ taraf hiç çalıştırılmaz ve program çökmez.

Örnek Kod:

// Geleneksel C# (C# 14 öncesi)
// Eğer musteri nesnesi null değilse Siparişi Getir ve ata:
if (musteri != null)
{
    musteri.Siparis = SiparisleriGetir();
}

// Modern C# 14 ile (?.= Operatörü)
// Sol taraf null değilse atamayı yap, null ise atla:
musteri?.Siparis .= SiparisleriGetir();

(C# 14 ile gelen bu yeni ?.= sözdizimi, kodunuzu hem çok daha kısa hem de inanılmaz güvenli hale getirir).


Sonuç

Tebrikler! C# programlama dilinde kodlarımıza yön verecek, hesaplamalar yapacak ve kararlar aldıracak olan Operatörler konusunu başarıyla tamamladınız. Matematiksel işlemleri (+, -, *, /), karşılaştırma mantığını (==, >) ve modern C# 14’ün getirdiği yepyeni pratik atama operatörlerini (+=, ?.=) örneklerle öğrendiniz.

Kod yazmak bir inşaat gibidir; veri tipleri sizin tuğlalarınız, operatörler ise o tuğlaları birbirine bağlayan harcınızdır. Bu konuyu iyice pekiştirmek için kendi konsol uygulamanızı açın ve yukarıdaki kodları değiştirerek pratik yapın. Bir sonraki adımda, bu operatörleri kullanarak programlarımıza zeka katacağımız If-Else (Koşul Yapıları) konusunu inceleyeceğiz. Keyifli kodlamalar!

Etiketlendi:

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir