Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
C#'ta static Member'lar, static Class ve Extension Method
Tipe ait static field ve method'lar, static method'da this'in yokluğu, const ile static readonly farkı ve static constructor'ın ne zaman çalıştığı, static class, ISBN doğrulayan bir extension method, extension kuralları ve paylaşılan static durumun thread tuzağı.
C#'ta Encapsulation ve Access Modifier'lar: public, private, protected, internal
Get-only bir List property'sinin neden hiçbir şeyi korumadığı, invariant'ları object'in içinde tutmak, IReadOnlyList ve AsReadOnly farkı, altı access modifier ve varsayılanları, private'ın tipe ait olması, internal ve InternalsVisibleTo ile assembly sınırı.
C#'ta Field, Property ve Constructor: Object'i Doğru Kurmak
Kendi constructor'ını yazınca kaybolan parametresiz constructor, private ve readonly field'lar, doğrulama yapan property, auto-property, get-only, private set, init ve hesaplanan property, constructor zincirleme ve initializer'ların çalışma sırası.
C# ile Class ve Object: İlk Kendi Tipini Yazmak
Class bir tarif, object onun bellekteki ürünü. Field ve method'larla ilk Book class'ı, this, reference type olmanın anlamı, == ile kimlik karşılaştırması, null ve NullReferenceException, class'ların dosya ve namespace düzeni.
C# Mini Proje: Konsolda Bookstore (Listele, Ekle, Ara, Dosyaya Kaydet)
C# Temelleri serisinin bitiş projesi: enum, DateOnly, nullable, TryParse, exception filtreleri ve dosya işlemleriyle konsolda çalışan bir Bookstore. İlk çalıştırmada yakalanan iki gerçek hata (14,00'ün 1400 olması ve sessizce silinen satır), düzeltmeleri ve OOP serisine köprü.
C# Hata Ayıklama: Breakpoint, Call Stack, Debug.Assert ve Derleyici Uyarıları
Debug.WriteLine neden terminalde görünmez, Debug.Assert neden Release'te yok olur? IDE'den bağımsız debugger kavramları, watch ile tamsayı bölmesi hatasını bulmak, stack trace okumak, dotnet build uyarılarının anatomisi ve WarningsAsErrors ile nullable uyarılarını hataya çevirmek.
C# Kodu Düzenlemek: Namespace, global using, Solution ve NuGet
internal bir member'a başka projeden erişince neden CS0117 alırsın? Proje ve assembly sınırı, file-scoped namespace, global using ve implicit using'lerin üretilen dosyası, .NET 10 SDK'nın .slnx solution'ı, projeler arası referans ve NuGet paketi eklemek.
C# Dosya ve Konsol: ReadLine, File, Path, Directory, using ve Encoding
Aynı metin neden 15 ve 18 bayt tutuyor? UTF-8 ve BOM, null dönebilen Console.ReadLine, Path.Combine ile Path.Join farkı, File ve Directory ile tek satırda okuma-yazma, göreli yollar ve çalışma klasörü, Dispose edilmeyen StreamWriter'ın boş kalan dosyası.
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ı.