C#
C# temellerinden LINQ, async/await ve .NET ekosistemine; modern dil özellikleri ve en iyi pratiklerle üretime hazır uygulamalar.
C# nedir?
C#, Microsoft tarafından geliştirilen, statik tipli, nesne yönelimli ve fonksiyonel özellikler barındıran bir dildir. .NET 8 ile birlikte çok platformlu (Windows, Linux, macOS) web API, masaüstü, bulut servisleri, arka plan işler ve oyun (Unity) gibi geniş bir alanda kullanılır.
Ekosistem: ASP.NET Core (web), Entity Framework Core (veri erişimi), xUnit/NUnit (test), NuGet (paket yönetimi) ve dotnet CLI (komut satırı) gibi araçlarla desteklenir.
TL;DR
- Modern C#:
record, pattern matching,async/await, span/memory ile performans. - Minimal API ile hızlı REST servisleri; EF Core ile verimli CRUD ve LINQ.
- Katmanlı mimari + bağımlılık enjeksiyonu ile test edilebilir tasarım.
Dil Temelleri
C# dilinin temel sözdizimi, tip sistemi ve kontrol akışı yapıları. Yeni başlayanların dilin mantığını kavraması için ilk durak.
C# ve .NET Ekosistemine Giriş
C# modern, güvenli ve nesne yönelimli bir dildir. .NET ekosistemi ile web, mobil, masaüstü ve oyun geliştirmek mümkündür.
C# İlk Proje
Visual Studio 2022 ile C#’ta ilk konsol uygulaması: Hello World örneği, WriteLine, ReadKey ve ReadLine kullanımı.
C# Temel Veri Tipleri
C#’ta temel veri tipleri: sayısal, metinsel, mantıksal, nesne tabanlı ve nullable tiplerin kullanımı.
C# Syntax Yapısı
C# dilinin temel syntax yapısını öğrenin. Kod blokları, yorum satırları ve değişken isimlendirme kuralları örneklerle açıklanıyor.
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# Karar Yapıları (if, else, switch)
C#’ta karar yapıları: if, else if, else ve switch ile koşullara göre farklı işlemler yapmayı öğrenin.
C# Döngüler (for, foreach, while, do-while)
C#’ta for, foreach, while ve do-while döngülerinin nasıl kullanıldığını öğrenin. Tekrar eden işlemleri yönetmek için pratik örnekler keşfedin.
C# Konsol Komutları
C# konsol uygulamalarında ekrana yazdırma, kullanıcıdan veri alma ve çıktı formatlama işlemlerini örneklerle öğrenin.
C# String İşlemleri
C#’ta string işlemlerini öğrenin: birleştirme, arama, substring, IndexOf ve diğer temel string metotlarını örneklerle keşfedin.
C# Veri Türü Dönüşümleri
C#’ta veri türü dönüşümlerini öğrenin. Implicit ve explicit casting, Parse, TryParse ve Convert yöntemleri örneklerle açıklanıyor.
C#’da Sabitler ve Enum Kullanımı
C#’da sabitler (const) ve enum kullanımıyla kodunuzu daha okunabilir ve güvenli hale getirin. Gerçek kullanım örnekleriyle öğrenin.
C# Math Kütüphanesi
C# Math kütüphanesini öğrenin. Pow, Sqrt, Round, Abs ve diğer matematiksel metotların kullanımını örneklerle keşfedin.
C# Boolean İşlemleri
C#’ta boolean işlemlerini öğrenin. bool veri tipi, karşılaştırmalar, &&, || ve ! operatörleri ile koşullu ifadelerin kullanımını keşfedin.
C# DateTime & TimeSpan ile Tarih İşlemleri
C#’ta DateTime ve TimeSpan kullanarak tarih ve zaman işlemlerini öğrenin. Karşılaştırma, ekleme, çıkarma ve formatlama örnekleriyle.
C# Random İşlemleri
C#’ta Random sınıfını kullanarak rastgele sayı, değer ve seçim üretmeyi öğrenin. Next, NextDouble ve örneklerle anlatım.
C# Metotlar ve Parametre Kullanımı
C#’ta metot tanımlama ve parametre kullanımını öğrenin. Değer ve referans parametreleri, varsayılan parametreler ve örneklerle.
C# Hata Denetimi (try, catch, finally)
C#’ta try, catch ve finally bloklarını kullanarak hataları yakalamayı ve güvenli hata yönetimi yapmayı örneklerle öğrenin.
C# Namespace ve Assembly Kavramı
C#’ta namespace ve assembly kavramlarını öğrenin. Kodun düzenlenmesi, bağımlılık yönetimi ve proje yapısı örneklerle anlatılıyor.
Nesne Yönelimli Programlama (OOP) ve Patterns
Sınıflar, kalıtım, arayüzler ve tasarım desenleri ile C#’ta yeniden kullanılabilir ve sürdürülebilir kod yazma yaklaşımı.
C# Sınıf (Class), Object, Property ve Metotlar
C#’ta class, object, property ve metot kavramlarını öğrenin. Nesne yönelimli programlamanın temel yapı taşları örneklerle açıklanıyor.
C# Struct (Yapılar) – Class ile Farkları
C#’ta struct ve class arasındaki farkları öğrenin. Bellek modeli, kalıtım, boxing ve performans karşılaştırmalarıyla açıklanıyor.
C# Constructor, Destructor ve this Kullanımı
C#’ta constructor, destructor ve this anahtar kelimesinin kullanımını öğrenin. Nesne yaşam döngüsü ve sınıf içi erişim örneklerle anlatılıyor.
C# Sealed, Static ve Partial Class Kullanımı
C#’ta sealed, static ve partial class yapılarını öğrenin. Kullanım amaçları, farkları ve gerçek senaryolar örneklerle anlatılıyor.
C# Record Types ve Immutable Nesneler
C# record type ve immutable nesneleri öğrenin. Değişmez veri modeli, value equality ve with ifadeleriyle modern C# pratiklerini keşfedin.
C# Encapsulation, Kalıtım, Polimorfizm
C#’ta encapsulation, kalıtım ve polimorfizmi öğrenin. OOP’nin temel prensiplerini örneklerle anlayıp doğru kullanımını keşfedin.
C# Interface ve Abstract Sınıflar
C#’ta interface ve abstract sınıfları öğrenin. Farklarını, ne zaman hangisini kullanacağınızı ve tasarım senaryolarını örneklerle keşfedin.
C# Delegates ve Events
C#’ta delegate ve event kavramlarını öğrenin. Olay tabanlı programlama, callback mantığı ve kullanım senaryoları örneklerle anlatılıyor.
C# Lambda İfadeleri
C#’ta lambda ifadelerini öğrenin. Kısa sözdizimi, Func ve Action kullanımı ile LINQ sorgularında pratik örnekler keşfedin.
C# Extension Metotlar
C#’ta extension metotları öğrenin. Mevcut sınıfları değiştirmeden yeni metotlar eklemeyi örneklerle keşfedin.
C# Dependency Injection Temelleri
C#’ta Dependency Injection kavramını öğrenin. Bağımlılıkların yönetimi, gevşek bağlılık ve test edilebilirlik örneklerle anlatılıyor.
C# ile SOLID Prensipleri
C# örnekleriyle SOLID prensiplerinin uygulanışı: daha esnek, sürdürülebilir ve test edilebilir kod tasarımları.
C# Tasarım Desenleri (Factory, Singleton, Repository, Observer vb.)
C#’ta Factory, Singleton, Repository ve Observer gibi tasarım desenlerini öğrenin. Esnek ve sürdürülebilir yazılım geliştirme örneklerle anlatılıyor.
C# Interop (C/C++ Kütüphaneleri ile Çalışma)
C#’ta Interop kullanarak C/C++ kütüphaneleriyle çalışmayı öğrenin. P/Invoke, unmanaged kod ve veri geçişi örneklerle açıklanıyor.
Veri ve Koleksiyonlar
Diziler, koleksiyonlar, generics ve LINQ ile veri yönetimi. Geliştiricilerin veriyi etkin şekilde işleyip sorgulaması için temel konular.
C# Diziler (Array)
C#’ta dizileri (array) öğrenin. Eleman ekleme, erişim, döngülerle gezinme ve temel array işlemleri örneklerle anlatılıyor.
C# Koleksiyonlar: List, Dictionary, Queue, Stack
C# koleksiyonlarını öğrenin: List, Dictionary, Queue ve Stack. Veri yönetimi, ekleme/çıkarma ve kullanım senaryoları örneklerle.
C# Generic Yapıları (List<T>, Dictionary<TKey,TValue>)
C# generic yapılarını öğrenin. List<T> ve Dictionary<TKey,TValue> ile tip güvenliği, yeniden kullanılabilirlik ve pratik örnekler.
C# LINQ Temelleri (Where, Select, OrderBy)
C# LINQ temellerini öğrenin. Where, Select ve OrderBy ile koleksiyonları sorgulama, filtreleme ve sıralama örneklerle anlatılıyor.
C# LINQ İleri Seviye (GroupBy, Join, Aggregate)
C#’ta ileri seviye LINQ konularını öğrenin: GroupBy, Join ve Aggregate ile karmaşık veri sorgularını yönetin.
C# Entity Framework Core Giriş
C#’ta Entity Framework Core temellerini öğrenin. DbContext, DbSet ve temel veri işlemleri örneklerle anlatılıyor.
C# File IO ve Stream API
C#’ta File IO ve Stream API kullanımını öğrenin. Dosya okuma, yazma ve veri akışı işlemleri örneklerle anlatılıyor.
Asenkron ve Performans
Async/await, çoklu iş parçacığı, Span<T> gibi konularla yüksek performanslı ve ölçeklenebilir uygulamalar geliştirme.
C# Asenkron Programlama Temelleri (async/await)
C#’ta async ve await kullanımını öğrenin. Asenkron işlemler, Task yapısı ve performanslı uygulama akışları örneklerle anlatılıyor.
C# Task Parallel Library (TPL) ve Paralel Programlama
C#’ta Task Parallel Library ve paralel programlamayı öğrenin. Task, Parallel ve eşzamanlı işlem senaryoları örneklerle anlatılıyor.
C# Asenkron Streamler (IAsyncEnumerable)
C#’ta IAsyncEnumerable ile asenkron stream kullanımını öğrenin. Veri akışını adım adım işleme senaryoları örneklerle anlatılıyor.
C# IDisposable ve Using Pattern
C#’ta IDisposable ve using pattern kullanımını öğrenin. Kaynak yönetimi, bellek temizliği ve güvenli nesne yaşam döngüsü anlatılıyor.
C# Span<T> ve Memory<T> ile Performans Optimizasyonu
C#’ta Span<T> ve Memory<T> ile performans optimizasyonunu öğrenin. Bellek yönetimi ve yüksek performanslı veri işlemleri örneklerle.
C# Reflection ve Late Binding
C#’ta Reflection ve Late Binding kullanımını öğrenin. Runtime tip keşfi, dinamik çağrılar ve esnek yapıların örnekleri anlatılıyor.
C# Source Generators Kavramı (C# 9+)
C# Source Generators kavramını öğrenin. Derleme zamanında kod üretimi ve performans avantajları örneklerle açıklanıyor.
C# Roslyn Compiler API ile Kod Analizi
C#’ta Roslyn Compiler API ile kod analizi yapmayı öğrenin. Syntax tree, analiz ve code generation senaryoları örneklerle.
C# Unsafe Kod ve Pointer Kullanımı
C#’ta unsafe kod ve pointer kullanımını öğrenin. Bellek adresleri, pointer işlemleri ve düşük seviye senaryolar örneklerle anlatılıyor.
C# Process ve Thread Yönetimi
C#’ta process ve thread yönetimini öğrenin. Çok iş parçacıklı yapı, süreç kontrolü ve sistem kaynaklarıyla çalışma örneklerle.
C# Memory Management ve Garbage Collector
C#’ta memory management ve garbage collector yapısını öğrenin. Bellek yaşam döngüsü, tahsis ve temizlik süreçleri anlatılıyor.
Araçlar ve Pratikler
Debugging, unit test, benchmark ve clean code prensipleri ile daha kaliteli, sürdürülebilir yazılım geliştirme alışkanlıkları.
C# Hata Ayıklama (Debugging) Teknikleri
C#’ta hata ayıklama tekniklerini öğrenin. Breakpoint, watch, step into/out ve debug araçlarıyla sorunları hızlıca çözün.
C# için Visual Studio / VS Code İpuçları
C# geliştiricileri için Visual Studio ve VS Code ipuçlarını öğrenin. Verimlilik artıran kısayollar ve geliştirme teknikleri.
C# Unit Test Yazımı (xUnit, NUnit, MSTest)
C#’ta unit test yazmayı öğrenin. xUnit, NUnit ve MSTest ile test senaryoları oluşturarak güvenilir yazılım geliştirin.
C# Mock Framework Kullanımı (Moq, NSubstitute)
C#’ta Moq ve NSubstitute ile mock framework kullanımını öğrenin. Unit testlerde bağımlılıkları izole etme ve test senaryoları.
C# Benchmarking Kullanımı (BenchmarkDotNet)
C#’ta BenchmarkDotNet ile benchmarking yapmayı öğrenin. Performans ölçümü ve kod optimizasyonu için pratik örnekler.
C# FluentValidation Kullanımı
C#’ta FluentValidation kullanarak veri doğrulama kurallarını öğrenin. Temiz ve sürdürülebilir validation senaryoları.
C# ile Clean Code Prensipleri
C# ile clean code prensiplerini öğrenin. Okunabilir, sürdürülebilir ve bakımı kolay kod yazma teknikleri örneklerle anlatılıyor.
C# Katmanlı Mimari ve Clean Architecture
C#’ta katmanlı mimari ve Clean Architecture yaklaşımını öğrenin. Bağımlılık yönetimi ve sürdürülebilir proje yapıları anlatılıyor.
C# Networking (TcpClient, HttpClient, REST API Çağrıları)
C#’ta networking konularını öğrenin. TcpClient, HttpClient ve REST API çağrıları ile veri iletişimi örneklerle anlatılıyor.
ASP.NET Core (.NET 8) Idempotency Key: Tekrarlanan POST İsteklerini Engelleyin
Idempotency-Key header’ı ile POST isteklerini güvenli şekilde tekrar edilebilir hale getirin; ilk yanıtı saklayıp tekrarında aynı yanıtı döndürerek çift kayıtları önleyin.
ASP.NET Core’da Güvenli Sort & Filter: Whitelist ile Query Builder
?sort=name,-createdAt&filter=country:TR,status:active gibi parametreleri whitelist ile güvenli parse edin; alan adlarını expression/kolon map’leyerek injection riskini azaltın.
ASP.NET Core Validation Hataları: ModelState'i { field, message }[] Formatına Dönüştürme
InvalidModelStateResponseFactory ile ModelState hatalarını { field, message }[] formatına normalize edin; böylece istemci tarafında form doğrulama hataları tek tip işlenir.
.NET’te Klasörü ZIP’leme (Progress ile) – WPF Örneği
ZipArchive ve IProgress kullanarak bir klasörü ZIP’lerken ilerlemeyi WPF ProgressBar’a aktarın ve UI’ı akıcı tutun.
ASP.NET Core'da Standart API Response Formatı (Result)
ASP.NET Core projelerinde başarı ve hata yanıtlarını Result
ASP.NET Core (.NET 8) IP Bazlı Rate Limiting: 429 Too Many Requests
.NET 8’in yerleşik rate limiting altyapısıyla IP başına istek sınırı koyun ve aşımda 429 + Retry-After döndürerek API’nizi koruyun.