logo
eng-flag

C# Notları ve İpuçları

İçindekiler

  1. Temel Sözdizimi
  2. Veri Tipleri
  3. Değişkenler
  4. Operatörler
  5. Kontrol Akışı
  6. Metodlar
  7. Diziler ve Koleksiyonlar
  8. Nesne Yönelimli Programlama
  9. Hata Yönetimi
  10. LINQ
  11. Asenkron Programlama
  12. Dosya İşlemleri
  13. Jenerikler
  14. Delegeler ve Olaylar

Temel Sözdizimi

Yorumlar

// Bu bir tek satırlık yorum

/*
Bu çok
satırlı bir
yorum
*/

/// <summary>
/// Bu bir XML belgeleme yorumu
/// </summary>

Ana Metod

Her C# programı Main metodundan başlar:

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Merhaba, Dünya!");
    }
}

Veri Tipleri

Değer Tipleri

byte b = 255;
short s = 32000;
int i = 2147483647;
long l = 9223372036854775807L;
float f = 3.14f;
double d = 3.14159265359;
decimal m = 3.14m;
bool boolean = true;
char c = 'A';

Referans Tipleri

string str = "Merhaba, Dünya!";
object obj = new object();
dynamic dyn = 42;

Değişkenler

// Değişken tanımlama
int sayi;

// Değişkene değer atama
sayi = 10;

// Tanımlama ve değer atama
string isim = "Ahmet";

// Sabitler
const double PI = 3.14159;

// Örtük olarak tiplendirilmiş yerel değişkenler
var mesaj = "Merhaba";

Operatörler

Aritmetik Operatörler

int a = 10, b = 3;

Console.WriteLine(a + b);  // Toplama: 13
Console.WriteLine(a - b);  // Çıkarma: 7
Console.WriteLine(a * b);  // Çarpma: 30
Console.WriteLine(a / b);  // Bölme: 3
Console.WriteLine(a % b);  // Mod: 1

Karşılaştırma Operatörleri

int x = 5, y = 10;

Console.WriteLine(x == y);  // Eşittir: false
Console.WriteLine(x != y);  // Eşit değildir: true
Console.WriteLine(x > y);   // Büyüktür: false
Console.WriteLine(x < y);   // Küçüktür: true
Console.WriteLine(x >= y);  // Büyük eşittir: false
Console.WriteLine(x <= y);  // Küçük eşittir: true

Mantıksal Operatörler

bool a = true, b = false;

Console.WriteLine(a && b);  // Mantıksal VE: false
Console.WriteLine(a || b);  // Mantıksal VEYA: true
Console.WriteLine(!a);      // Mantıksal DEĞİL: false

Kontrol Akışı

If-Else İfadesi

int x = 10;

if (x > 0)
{
    Console.WriteLine("Pozitif");
}
else if (x < 0)
{
    Console.WriteLine("Negatif");
}
else
{
    Console.WriteLine("Sıfır");
}

Switch İfadesi

int gun = 3;
switch (gun)
{
    case 1:
        Console.WriteLine("Pazartesi");
        break;
    case 2:
        Console.WriteLine("Salı");
        break;
    case 3:
        Console.WriteLine("Çarşamba");
        break;
    default:
        Console.WriteLine("Diğer gün");
        break;
}

For Döngüsü

for (int i = 0; i < 5; i++)
{
    Console.WriteLine(i);
}

// Foreach döngüsü
int[] sayilar = { 1, 2, 3, 4, 5 };
foreach (int sayi in sayilar)
{
    Console.WriteLine(sayi);
}

While Döngüsü

int sayac = 0;
while (sayac < 5)
{
    Console.WriteLine(sayac);
    sayac++;
}

Do-While Döngüsü

int i = 0;
do
{
    Console.WriteLine(i);
    i++;
} while (i < 5);

Metodlar

// Metod tanımı
static int Topla(int a, int b)
{
    return a + b;
}

// Metod aşırı yükleme
static double Topla(double a, double b)
{
    return a + b;
}

// Metod çağrısı
int toplam = Topla(5, 3);
double toplamDouble = Topla(5.5, 3.3);

// İsteğe bağlı parametreler
static void Selamla(string isim, string selamlama = "Merhaba")
{
    Console.WriteLine($"{selamlama}, {isim}!");
}

// İsimlendirilmiş argümanlar
Selamla(selamlama: "Selam", isim: "Ali");

Diziler ve Koleksiyonlar

Diziler

// Dizi tanımlama ve başlatma
int[] sayilar = { 1, 2, 3, 4, 5 };

// Dizi elemanlarına erişim
Console.WriteLine(sayilar[0]);  // 1 yazdırır

// Çok boyutlu dizi
int[,] matris = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

// Düzensiz dizi
int[][] duzensizDizi = new int[3][];
duzensizDizi[0] = new int[] { 1, 2, 3 };
duzensizDizi[1] = new int[] { 4, 5 };
duzensizDizi[2] = new int[] { 6, 7, 8, 9 };

Listeler

using System.Collections.Generic;

List<string> meyveler = new List<string> { "Elma", "Muz", "Kiraz" };
meyveler.Add("Hurma");
meyveler.Remove("Muz");
Console.WriteLine(meyveler[0]);  // "Elma" yazdırır
Console.WriteLine(meyveler.Count);  // 3 yazdırır

Sözlükler

Dictionary<string, int> yaslar = new Dictionary<string, int>
{
    { "Ali", 30 },
    { "Ayşe", 25 },
    { "Mehmet", 35 }
};

Console.WriteLine(yaslar["Ayşe"]);  // 25 yazdırır
yaslar["Fatma"] = 40;
yaslar.Remove("Ali");

Nesne Yönelimli Programlama

Sınıf Tanımı

public class Araba
{
    // Alanlar
    private string marka;
    private string model;
    
    // Özellikler
    public int Yil { get; set; }
    
    // Kurucu
    public Araba(string marka, string model)
    {
        this.marka = marka;
        this.model = model;
    }
    
    // Metodlar
    public void Calistir()
    {
        Console.WriteLine("Araba çalışıyor...");
    }
    
    // Getter ve Setter'lar
    public string MarkaAl()
    {
        return marka;
    }
    
    public void MarkaAyarla(string marka)
    {
        this.marka = marka;
    }
}

Nesne Oluşturma ve Kullanma

Araba arabam = new Araba("Toyota", "Corolla");
arabam.Yil = 2022;
arabam.Calistir();
Console.WriteLine(arabam.MarkaAl());

Kalıtım

public class ElektrikliAraba : Araba
{
    public int BataryaKapasitesi { get; set; }
    
    public ElektrikliAraba(string marka, string model, int bataryaKapasitesi) 
        : base(marka, model)
    {
        BataryaKapasitesi = bataryaKapasitesi;
    }
    
    public override void Calistir()
    {
        Console.WriteLine("Elektrikli araba sessizce çalışıyor...");
    }
}

Arayüz

public interface ISurulebilir
{
    void Sur();
    void Dur();
}

public class Araba : ISurulebilir
{
    public void Sur()
    {
        Console.WriteLine("Araba sürülüyor");
    }
    
    public void Dur()
    {
        Console.WriteLine("Araba durdu");
    }
}

Hata Yönetimi

try
{
    int sonuc = 10 / 0;
}
catch (DivideByZeroException e)
{
    Console.WriteLine("Sıfıra bölme hatası!");
}
finally
{
    Console.WriteLine("Bu her zaman çalışır");
}

// Hata fırlatma
public void YasKontrol(int yas)
{
    if (yas < 0)
    {
        throw new ArgumentException("Yaş negatif olamaz");
    }
}

LINQ

using System.Linq;

int[] sayilar = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// Sorgu sözdizimi
var ciftSayilar = from sayi in sayilar
                  where sayi % 2 == 0
                  select sayi;

// Metod sözdizimi
var tekSayilar = sayilar.Where(x => x % 2 != 0);

var toplam = sayilar.Sum();
var ortalama = sayilar.Average();
var maksimum = sayilar.Max();

Asenkron Programlama

using System.Threading.Tasks;

public async Task<string> VeriGetirAsync()
{
    await Task.Delay(1000);  // Asenkron bir işlemi simüle etme
    return "Veri başarıyla getirildi";
}

// Kullanımı
public async Task VeriIsleAsync()
{
    string sonuc = await VeriGetirAsync();
    Console.WriteLine(sonuc);
}

Dosya İşlemleri

using System.IO;

// Dosyadan okuma
string icerik = File.ReadAllText("dosya.txt");

// Dosyaya yazma
File.WriteAllText("cikti.txt", "Merhaba, Dünya!");

// Dosyadan satır satır okuma
string[] satirlar = File.ReadAllLines("dosya.txt");

// Dosyaya ekleme yapma
File.AppendAllText("gunluk.txt", "Yeni günlük girdisi
");

Jenerikler

public class Kutu<T>
{
    private T oge;

    public void OgeAyarla(T oge)
    {
        this.oge = oge;
    }

    public T OgeAl()
    {
        return oge;
    }
}

// Kullanımı
Kutu<int> intKutu = new Kutu<int>();
intKutu.OgeAyarla(10);
int deger = intKutu.OgeAl();

Delegeler ve Olaylar

// Delege tanımı
public delegate void MesajIsleyici(string mesaj);

// Olay tanımı
public event MesajIsleyici MesajAlindi;

// Delege imzasına uyan metod
public void MesajGoster(string mesaj)
{
    Console.WriteLine(mesaj);
}

// Kullanımı
MesajIsleyici isleyici = MesajGoster;
isleyici("Merhaba, Delege!");

// Olay kullanımı
MesajAlindi += MesajGoster;
MesajAlindi?.Invoke("Merhaba, Olay!");

2024 © Tüm hakları saklıdır - buraxta.com