Yükleniyor...

C# Operatörleri ve İfadeler

C#’ta operatörler ve ifadeler: aritmetik, karşılaştırma, mantıksal, artırma/azaltma, ternary ve null-coalescing kullanımı.

C# dilinde operatörler, değişkenler veya değerler üzerinde işlem yapan özel sembollerdir. Bu semboller sayesinde matematiksel hesaplamalar yapabilir, iki değeri karşılaştırabilir, mantıksal koşullar oluşturabilir veya bir değişkene hızlıca değer atayabilirsiniz. Operatörlerin bir araya gelmesiyle oluşan yapılara ise ifade (expression) adı verilir. İfadeler, programın akışını yönlendiren ve sonuç üreten temel yapı taşlarıdır.


Atama Operatörü (=)

Bir değişkene değer atamak için kullanılır.


int x = 5;
string mesaj = "Merhaba";
x = 10;

Burada int türünde olan x değişkenine 5 değeri atanır, string türünde olan mesaj değişkenine "Merhaba" değeri atanır. Daha sonra x değişkenine 10 değeri atanır.

Aritmetik Operatörler

C#’ta sayısal işlemler yapmak için aritmetik operatörler kullanılır. Bu operatörler toplama, çıkarma, çarpma, bölme ve mod alma (kalan) gibi temel matematik işlemlerini gerçekleştirir.

Operatör Açıklama Örnek (x=10, y=3) Sonuç
+ Toplama x + y 13
- Çıkarma x - y 7
* Çarpma x * y 30
- Bölme x / y 3
% Mod (Kalan) x % y 1

Örnek:


int a = 15;
int b = 4;

Console.WriteLine(a + b); // 19
Console.WriteLine(a / b); // 3
Console.WriteLine(a % b); // 3

Karşılaştırma Operatörleri

C#’ta karşılaştırma operatörleri, iki değeri birbirleriyle karşılaştırmak için kullanılır. Bu operatörlerin sonucu her zaman bool tipindedir.

boolyalnızca true (doğru) veya false (yanlış) değerini alabilen mantıksal veri tipidir.

Operatör Açıklama Örnek (x=10, y=3) Sonuç
== Eşit mi x == y false
!= Eşit değil mi x != y true
> Büyük mü x > y true
< Küçük mü x < y false
>= Büyük veya eşit mi x >= y true
<= Küçük veya eşit mi x <= y false

Örnek:


int a = 7;
int b = 10;

bool sonuc1 = (a < b);     // true
bool sonuc2 = (a == b);    // false

Console.WriteLine(sonuc1); // true
Console.WriteLine(sonuc2); // false

Mantıksal Operatörler

Koşulları birleştirmek için kullanılır. Bu koşullar bool türündedir. Mantıktaki ve, veya, değil işlemlerini çalıştırır.

Değer 1 Değer 2 && (ve) || (veya)
true true true true
true false false true
false true false true
false false false false

Operatörler şu şekilde kullanılır:

Operatör Açıklama Örnek (a=true, b=false) Sonuç
&& ve x && y false
|| veya x || y true
! değildir !x false

Mesela x değişkeni 5'den küçükse ve y değişkeni 10'dan büyükse koşulu şöyle yazılır:


bool crit = x < 5 && y > 10;

Yaş 18'den büyük ve ehliyet varsa kullanıcının araba kullanılabileceğini belirten basit bir örnek:

using System;

class Program
{
    static void Main()
    {
        Console.Write("Yaşınızı giriniz: ");
        int yas = int.Parse(Console.ReadLine());

        Console.Write("Ehliyetiniz var mı? (Y/N): ");
        string cevap = Console.ReadLine().ToUpper();

        bool ehliyet = (cevap == "Y");

        if (yas >= 18 && ehliyet)
        {
            Console.WriteLine("Araba sürebilirsiniz.");
        }
        else
        {
            Console.WriteLine("Araba süremezsiniz.");
        }
    }
}

Bileşik Atama Operatörleri

Atama ile aritmetiği birleştirir. Mesela bir sayının üzerine 5 koyar, 4 çıkarır ya da kendisini 2 ile çarpar.

Operatör Açıklama Örnek (x=10) Sonuç
+= ekle x += 5 15
-= çıkar x -= 2 8
*= çarp x *= 6 60
/= böl x /= 2 5
%= mod x %= 2 0

Artırma ve Azaltma Operatörleri

Bir sayıyı 1 artırmak veya azaltmak için kullanılır.


int x = 5;

x++; // 6
x--; // 5

Ön-ek vs Son-ek farkı:


int a = 5;
Console.WriteLine(++a); // 6 (önce artır, sonra yazdır)
Console.WriteLine(a++); // 6 (önce yazdır, sonra artır → a=7)

Ternary Operatör (?:)

Kısa if-else yazımıdır. Koşullu bir şekilde iki değerden birini seçer.

using System;

class Program
{
    static void Main()
    {
        Console.Write("Bir sayı giriniz: ");
        int num = int.Parse(Console.ReadLine());

        string sonuc = (num % 2 == 0) 
            ? "Girdiğiniz sayı çifttir." 
            : "Girdiğiniz sayı tektir.";

        Console.WriteLine(sonuc);
    }
}

Null-Coalescing Operatörleri (?? ve ??=)

C#’ta null, bir değişkenin herhangi bir değere işaret etmediğini ifade eder. Yani değişken tanımlanmış ama içinde bir değer yoktur. Özellikle string veya sınıf (referans tipleri) değişkenlerinde sıkça karşımıza çıkar.

Bazen null gelen bir değişken yerine varsayılan bir değer atamak isteriz. İşte burada null-coalescing operatörleri devreye girer:

Örnek 1: ?? kullanımı


string name = null;
string result = name ?? "İsimsiz";

Console.WriteLine(result);

Örnek 2: ??= kullanımı


string name = null;
name ??= "Bilinmiyor";

Console.WriteLine(name); // Bilinmiyor

Örnek (Alışveriş Sepeti)

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        // Girdi kültürü: nokta veya virgül farkını azaltmak için
        CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;

        // 1) Kullanıcı verilerini arka arkaya alalım
        Console.Write("Ad (boş bırakabilirsiniz): ");
        string ad = Console.ReadLine();
        ad = string.IsNullOrWhiteSpace(ad) ? null : ad.Trim();
        ad ??= "Misafir"; // (??=) null ise varsayılan adı ata

        Console.Write("Şehir (boş bırakabilirsiniz): ");
        string sehir = Console.ReadLine();
        sehir = string.IsNullOrWhiteSpace(sehir) ? null : sehir.Trim();
        string sehirBilgisi = sehir ?? "Bilinmeyen Şehir"; // (??) null ise gösterilecek değer

        Console.Write("Sepet tutarı (ör. 749.90): ");
        double sepetTutar = double.Parse(Console.ReadLine());

        Console.Write("Üye misiniz? (Y/N): ");
        bool uye = Console.ReadLine().Trim().ToUpper() == "Y";

        Console.Write("Kupon kodu (boş bırakabilirsiniz): ");
        string kupon = Console.ReadLine();
        kupon = string.IsNullOrWhiteSpace(kupon) ? null : kupon.Trim().ToUpper();

        Console.Write("Ekspres kargo ister misiniz? (Y/N): ");
        bool ekspres = Console.ReadLine().Trim().ToUpper() == "Y";

        // 2) İş kuralları ve operatörler

        // Aritmetik: KDV, indirim, kargo, toplam
        const double KdvOrani = 0.20;         // %20 KDV
        const double UyeInd1 = 0.05;          // Üye ise %5
        const double UyeInd2 = 0.10;          // Üye ve sepet >= 500 ise %10
        const double KuponInd = 0.10;         // Kupon "INDIRIM10" ise +%10
        const double MaxIndirim = 0.25;       // Toplam indirim tavanı %25
        const double StdKargo = 19.90;
        const double EkspresKargo = 49.90;
        const double UcretsizKargoEsik = 300.0;

        // Karşılaştırma + mantıksal: indirim oranını belirle
        double indirimOrani = uye && sepetTutar >= 500
            ? UyeInd2
            : (uye ? UyeInd1 : 0.0); // (?:) ternary

        // Mantıksal: kupon kontrolü (OR)
        if (kupon == "INDIRIM10" || kupon == "KOD10")
            indirimOrani += KuponInd;         // Bileşik atama (+=)

        // Tavan uygula
        indirimOrani = Math.Min(indirimOrani, MaxIndirim);

        // İndirim ve KDV hesapla
        double indirimTutar = sepetTutar * indirimOrani;   // (*)
        double araToplam   = sepetTutar - indirimTutar;    // (-)
        double kdv         = araToplam * KdvOrani;         // (*)

        // Kargo: ekspres mi? değilse ücretsiz eşik kontrolü
        double kargo = ekspres
            ? EkspresKargo
            : (araToplam >= UcretsizKargoEsik ? 0.0 : StdKargo);

        // Genel toplam
        double genelToplam = araToplam + kdv;              // (+)
        genelToplam += kargo;                              // Bileşik atama (+=)

        // 3) Özet çıktısı
        Console.WriteLine();
        Console.WriteLine("— Ödeme Özeti —");
        Console.WriteLine($"Müşteri   : {ad} ({sehirBilgisi})");
        Console.WriteLine($"Sepet     : {sepetTutar:0.00} ₺");
        Console.WriteLine($"İndirim % : {(indirimOrani * 100):0}%  (-{indirimTutar:0.00} ₺)");
        Console.WriteLine($"Ara Toplam: {araToplam:0.00} ₺");
        Console.WriteLine($"KDV (%20) : {kdv:0.00} ₺");
        Console.WriteLine($"Kargo     : {kargo:0.00} ₺ {(ekspres ? "(Ekspres)" : "(Standart)")}");
        Console.WriteLine($"Genel Toplam: {genelToplam:0.00} ₺");

        // Ek mantıksal örnek: fatura notu
        bool yuksekSepet = genelToplam >= 1000.0;
        Console.WriteLine(yuksekSepet && uye
            ? "Not: Yüksek tutarlı siparişiniz için ekstra puan kazandınız."
            : "Not: Üyelikle ekstra indirimlerden yararlanabilirsiniz.");
    }
}

Bu örnek ile yukarıdaki başlıkların kombine edildiği uygulamayı konsol uygulamanızda deneyebilirsiniz.

C# Konsol Sepet Uygulaması

Uygulama çıktısı yukarıdaki şekilde olacaktır.