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);
}
}
Console.ReadLine()ile sayı okunur.int.Parseilestringtüründeninttürüne dönüşümü yapılır.- Ternary (
?:) ilenum % 2 == 0kontrol edilir. - Sonuç mesajı ekrana yazdırılır.
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.
Uygulama çıktısı yukarıdaki şekilde olacaktır.