Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
C# ve .NET Nedir? Dil, Platform ve Sürümler
C# ile .NET arasındaki çizgi: compiler, IL ve JIT, CLR, BCL, SDK ile runtime farkı, .NET Framework'ten .NET'e geçiş, LTS/STS destek takvimi, C# ve .NET sürüm eşleşmesi ve yedi serilik C# ailesinin kurgusu.
C# Kurulum ve İlk Program: dotnet new console ve Proje Dosyası
.NET 10 SDK'yı kurmak, dotnet new console ile ilk proje, Main'i compiler'ın ürettiği top-level statements, csproj'daki TargetFramework, ImplicitUsings, Nullable ve LangVersion, dotnet run ve build, IDE seçimi ve ilk derleyici hatasını okumak.
C# Değişkenler ve Veri Tipleri: var, const ve Literal'ler
C#'ta statik tipli değişkenler, hazır tiplerin boyutları ve aralıkları, var'ın gerçekte ne yaptığı, literal sonekleri ve derleyici hataları, const ve C# 10'un sabit interpolated string'i, varsayılan değerler ve .NET isimlendirme gelenekleri.
C# Sayılar ve Aritmetik: int, double, decimal ve Overflow
C#'ta tamsayı bölmesi ve kalan, int, long, double ve decimal arasında seçim, 0.1 + 0.2'nin neden 0.3 etmediği, para için decimal, overflow ve checked, sıfıra bölme, Math class'ı ve banker's rounding tuzağı.
C# String'ler: Interpolation, StringBuilder ve Türkçe I Tuzağı
C#'ta string'in değiştirilemez oluşu, interpolation ve biçim belirteçleri, escape sequence'lar ve verbatim string, sık kullanılan method'lar, StringBuilder ile ölçülmüş bellek farkı, StringComparison ve Türkçe I/ı/İ tuzağı.
C# Tip Dönüşümleri: Cast, Parse, TryParse ve Convert
C#'ta implicit ve explicit dönüşüm, cast'in kesmesi ve overflow'u, Parse ile TryParse'ın ne zaman kullanılacağı, Convert'ün yuvarlama ve null davranışı, fiyatları sessizce yüz katına çıkaran culture'a bağlı parse ve boxing/unboxing'e ilk bakış.
C# Operatörler ve Expression'lar: Short-Circuit, ??, ?. ve Öncelik
C#'ta expression ve statement farkı, aritmetik ve bileşik atama, prefix/postfix artırma, karşılaştırma, mantıksal operatörler ve short-circuit, ?: operatörü, ??, ??= ve ?. ile null yönetimi ve 100 - discount ?? 0 gibi öncelik tuzakları.
C# Koşullar: if/else, switch ve Switch Expression
C#'ta karar vermenin yolları: if/else zincirinde sıranın önemi, süslü parantez ve scope, fall-through'a izin vermeyen switch statement, değer döndüren switch expression ve C# 9 ile gelen relational ve logical pattern'ler.
C# Döngüler: for, while, do-while ve foreach
C#'taki dört döngü ve ne zaman hangisi: for, while, do-while ve foreach. break ve continue, iç içe döngüden temiz çıkmak, sonsuz döngü pattern'i ve gezerken collection'ı değiştirmenin neden exception fırlattığı.
C# Array'ler: Tek ve Çok Boyutlu, Jagged, Index ve Range
C#'ta array'ler: tanımlama ve default değerler, array'in reference type oluşu ve doğru kopyalama, çok boyutlu ve jagged array'ler, Array class'ının method'ları, C# 8 ile gelen Index ve Range ve Range'in neden kopya oluşturduğu.
C# Method'ları: Parametreler, Overloading, ref/out/in ve params
C#'ta method yazmanın temel araçları: değerle geçen parametreler ve dönüş değeri, overloading ve signature, optional ve named argümanlar, ref, out ve in, params, local function'lar ve neden overload edilemedikleri, expression-bodied member'lar.
C# Value Type ve Reference Type: Atama, Kopyalama ve string'in Özel Durumu
C#'ta value type ve reference type farkı: atamada ve method'a geçirirken ne kopyalanır, string neden value type gibi davranır, stack ve heap anlatımının doğru kısmı ve eksik kısmı, eşitlik, boxing ve collection'daki struct tuzakları.