Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
101 yazı bulundu #csharp
C#'ta Span<T> ve Memory<T>: Allocation'sız Parse, stackalloc ve ref struct Kuralları
Backend SERİ 08

C#'ta Span<T> ve Memory<T>: Allocation'sız Parse, stackalloc ve ref struct Kuralları

Span<T> ile kopyasız dilimleme ve allocation'sız parse, ölçülmüş allocation farkı, stackalloc ve güvenli kullanım pattern'i, ref struct kısıtları ve async kod için Memory<T>.

7 Kas 2026 10 dk 10
C#'ta Expression Tree: Lambda'yı Veri Olarak Tutmak ve EF Core'a Köprü
Backend SERİ 07

C#'ta Expression Tree: Lambda'yı Veri Olarak Tutmak ve EF Core'a Köprü

Func ile Expression<Func> farkı, ağacın node'larına bakmak ve Compile, Expression factory method'larıyla dinamik filtre kurmak, ExpressionVisitor ile küçük bir SQL çevirici, IQueryable ve EF Core 6'nın ToQueryString çıktısı, yakalanan değişkenin parametreye dönüşmesi, çevrilemeyen method hatası, CS0834, CS8072, CS8110 gibi sınırlar ve BenchmarkDotNet ile Compile'ın 70 mikrosaniyelik bedeli.

7 Kas 2026 11 dk 6
C#'ta Attribute ve Reflection: Kendi Attribute'unu Yazmak ve Okumak
Backend SERİ 06

C#'ta Attribute ve Reflection: Kendi Attribute'unu Yazmak ve Okumak

Attribute'un metadata'da durup okunduğunda oluşması, Obsolete ve CS0618, AttributeUsage, positional ve named argümanlar, decimal'in attribute parametresi olamaması ve CS0181, reflection ile küçük bir validator, IDiscountRule uygulayan tipleri keşfedip Activator ve Invoke ile çalıştırmak, BenchmarkDotNet ile GetValue, cache'lenmiş PropertyInfo ve typed delegate karşılaştırması, trimming ve source generator sınırları.

7 Kas 2026 11 dk 8
C#'ta Nullable Reference Types Derinlemesine: NotNullWhen, MaybeNull ve API Tasarımı
Backend SERİ 05

C#'ta Nullable Reference Types Derinlemesine: NotNullWhen, MaybeNull ve API Tasarımı

Flow analysis'in method sınırında durması ve CS8602, NotNullWhen ile koşullu contract ve CS8762, kısıtsız T?'nin value type'ta düz T kalması, MaybeNullWhen ile generic Try pattern'i, NotNullIfNotNull, NotNull ve AllowNull, CS8618 için MemberNotNull, DoesNotReturn, runtime'da korumanın olmaması ve ThrowIfNull, kademeli geçiş için #nullable ve WarningsAsErrors.

7 Kas 2026 9 dk 9
C#'ta Pattern Matching Derinlemesine: Property, Positional ve Tuple Pattern'ler
Backend SERİ 04

C#'ta Pattern Matching Derinlemesine: Property, Positional ve Tuple Pattern'ler

Property pattern ve C# 10'un genişletilmiş yazımı, null ara adımda sessizce başarısız olan eşleşme, Deconstruct ile positional pattern, tuple pattern ile karar tablosu, not/and/or önceliği ve is not A or B tuzağı, var pattern ve when, CS8509, CS8524 ve CS8510 ile eksik ve erişilemeyen arm'lar, pattern matching ile polymorphism arasında seçim.

7 Kas 2026 11 dk 7
C#'ta Event: EventHandler, Güvenli Tetikleme ve Subscription Leak
Backend SERİ 03

C#'ta Event: EventHandler, Güvenli Tetikleme ve Subscription Leak

event keyword'ünün delegate'i nasıl koruduğu ve CS0070, compiler'ın ürettiği private field ile add/remove method'ları, EventHandler konvansiyonu ve record ile event verisi, ?.Invoke ile güvenli tetikleme, kendi add/remove accessor'ların ve CS0079, WeakReference ile ölçülen 50 MB'lık subscription leak'i ve IDisposable dönen Subscribe.

7 Kas 2026 10 dk 8
C#'ta Lambda ve Closure: Yakalanan Değişken Tuzağı
Backend SERİ 02

C#'ta Lambda ve Closure: Yakalanan Değişken Tuzağı

Lambda'nın biçimleri ve C# 10 açık dönüş tipi, closure'ın değişkenin değerini değil kendisini yakalaması, compiler'ın ürettiği display class'ı reflection ile görmek, for döngüsünde yakalanan değişken ve C# 5'in foreach değişikliği, closure başına 88 byte allocation ölçümü, static lambda ve CS8820, deferred LINQ ile birleşen yakalama hatası.

7 Kas 2026 9 dk 4
C#'ta Delegate, Func ve Action: Method'u Değer Gibi Taşımak
Backend SERİ 01

C#'ta Delegate, Func ve Action: Method'u Değer Gibi Taşımak

Delegate bir method'u tutan tiptir: MulticastDelegate'ten derive eden class, Method ve Target, Func/Action/Predicate, C# 10 ile lambda'nın doğal tipi ve CS8917, method'u parametre olarak geçirmek, multicast delegate'in son sonucu ve kesilen zincir, delegate tipleri arası dönüşüm ve variance, null delegate ve -= ile çıkmayan lambda tuzakları.

7 Kas 2026 9 dk 8
C# Async ve .NET 9–10: Task.WhenEach, Lock Tipi ve Framework'teki Async LINQ
Backend SERİ 17

C# Async ve .NET 9–10: Task.WhenEach, Lock Tipi ve Framework'teki Async LINQ

WhenAny döngüsünün yerini alan .NET 9 Task.WhenEach ve hatalı task'larla davranışı, C# 13 lock statement'ının tanıdığı System.Threading.Lock ile CS9216, CS1996, CS4007 ve CS9202 sınırları, .NET 10'da framework'e giren async LINQ, async Select ve System.Linq.Async paketiyle çakışmanın çözümü.

7 Kas 2026 11 dk 4
C# Async ve .NET 8: TimeProvider, ConfigureAwaitOptions, Parallel.ForAsync ve CancelAsync
Backend SERİ 16

C# Async ve .NET 8: TimeProvider, ConfigureAwaitOptions, Parallel.ForAsync ve CancelAsync

.NET 6'da kendi IClock'umuzu yazıyorduk; .NET 8'de TimeProvider ve FakeTimeProvider ile 15 dakikalık bekleme testte 0 ms sürüyor. Exception fırlatmadan bekleyen SuppressThrowing ve Task<T> tuzağı, ForceYielding, index aralığını doğrudan alan Parallel.ForAsync ve callback'leri iptal edeni bekletmeden çalıştıran CancelAsync.

7 Kas 2026 10 dk 3
C# Timer'lar ve Bekleme: PeriodicTimer, WaitAsync ve Task.Delay
Backend SERİ 15

C# Timer'lar ve Bekleme: PeriodicTimer, WaitAsync ve Task.Delay

System.Threading.Timer'da üst üste binen callback'ler, .NET 6 PeriodicTimer ile çakışmasız periyodik iş, Thread.Sleep ile Task.Delay'in thread pool'a etkisi ve Task.Delay'in hassasiyeti, exception'ları yutan System.Timers.Timer, işlemi iptal etmeyen WaitAsync, backoff ve jitter ile retry, GC'nin topladığı timer.

7 Kas 2026 10 dk 5
C# Channels ile Producer/Consumer: Backpressure, Bounded Channel ve Pipeline
Backend SERİ 14

C# Channels ile Producer/Consumer: Backpressure, Bounded Channel ve Pipeline

System.Threading.Channels ile async queue: kapasitesi iki olan channel'a neden üç sipariş sığıyor, Writer/Reader ve Complete, WaitToReadAsync/TryRead döngüsü, bounded channel'da FullMode seçenekleri ve itemDropped, birden çok consumer, hatayı Complete(ex) ile ileten bir sipariş pipeline'ı ve Complete'i unutmanın bedeli.

7 Kas 2026 9 dk 4
Blog Haritası