Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
C# Tarih ve Saat: DateTime, DateTimeOffset, DateOnly, TimeOnly ve UTC
Neden aynı rakamlı UTC ve yerel DateTime eşit çıkıyor? Kind sorunu, anı sabitleyen DateTimeOffset, TimeZoneInfo ve yaz saati, .NET 6 ile gelen DateOnly ve TimeOnly, TimeSpan'de Days ile TotalDays farkı, culture'a bağlı biçimlendirme ve parse, UTC'de saklama kuralı.
C# Enum: Underlying Type, [Flags], Parse ve switch
Enum'ın altındaki sayı: neden (OrderStatus)7 geçerli bir değer, default'un 0 olması, değerleri elle vermek, Parse ve TryParse'ın sürprizleri, switch expression'da CS8524 uyarısı ve [Flags] ile birleşebilen seçenekler.
C# Exception Handling: try/catch/finally, throw ve Kendi Exception'ın
C#'ta exception handling: try, catch ve sıralaması, finally ve using ile temizlik, throw ile throw ex farkının stack trace'e etkisi, when filtresi, kendi exception tipini ve InnerException'ı kullanmak, ne zaman exception ne zaman TryXxx.
C# Nullable: int?, string? ve null'ı Tasarımla Yönetmek
C#'ta null ile çalışmak: Nullable<T> ve int?, null ile hesap yapan lifted operatörler, C# 8 ile gelen nullable reference types ve uyarıları, flow analysis, ?. ?? ??= ve ! operatörleri ve null'ı tasarımla yönetmenin kuralları.
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ı.
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# 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# 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# 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# 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# 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# 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ğı.