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
228 yazı bulundu #dotnet
C# Sürümleri: 1.0'dan 10'a Dilin Kısa Tarihi
Backend SERİ 01

C# Sürümleri: 1.0'dan 10'a Dilin Kısa Tarihi

C# 1.0'dan C# 10'a her sürümün imza özellikleri, çıkış tarihleri ve .NET eşleşmesi; aynı kodu farklı LangVersion değerleriyle derleyip compiler'ın hangi özelliğin hangi sürümden geldiğini nasıl söylediğini görmek.

7 Kas 2026 13 dk 23
C#'ta Unit Test: xUnit, Theory/InlineData ve Test Edilebilir Kod
Backend SERİ 14

C#'ta Unit Test: xUnit, Theory/InlineData ve Test Edilebilir Kod

Flaky bir testin sebebi olan gizli bağımlılıklar, xUnit test projesi, Fact ve Assert, Theory/InlineData/MemberData, zamanı IClock ile dışarıdan almak ve decimal InlineData, async void gibi tuzaklar.

7 Kas 2026 8 dk 18
C#'ta Dependency Injection Temelleri: Lifetime'lar, Container ve Captive Dependency
Backend SERİ 13

C#'ta Dependency Injection Temelleri: Lifetime'lar, Container ve Captive Dependency

Microsoft.Extensions.DependencyInjection ile constructor injection, singleton/scoped/transient farkı, container'ın dispose sorumluluğu, captive dependency ve ValidateScopes, çoklu registration, TryAdd ve factory'ler.

7 Kas 2026 9 dk 12
C#'ta Performans: Allocation, Struct'lar ve BenchmarkDotNet ile Ölçmek
Backend SERİ 12

C#'ta Performans: Allocation, Struct'lar ve BenchmarkDotNet ile Ölçmek

Stopwatch'un neden yetmediği, BenchmarkDotNet 0.15.8 kurulumu ve tabloyu okumak, class ile struct'ın ölçülmüş farkı, boxing ve closure kaynaklı gizli allocation'lar ve benchmark tuzakları.

7 Kas 2026 10 dk 16
C#'ta Source Generator: IIncrementalGenerator ile Compile Time'da Kod Üretmek
Backend SERİ 11

C#'ta Source Generator: IIncrementalGenerator ile Compile Time'da Kod Üretmek

Derleme sırasında kod ekleyen bir incremental generator yazmak: netstandard2.0 projesi ve Roslyn sürümü, pipeline ve cache, üretilen kodu görmek, partial ve hint name tuzakları.

7 Kas 2026 9 dk 13
C#'ta Interop ve unsafe Kod: P/Invoke, Pointer'lar ve fixed
Backend SERİ 10

C#'ta Interop ve unsafe Kod: P/Invoke, Pointer'lar ve fixed

AllowUnsafeBlocks ve pointer'lar, fixed ile GC'ye karşı sabitlemek, DllImport ile libc çağırmak, string marshalling, function pointer ile callback, NativeMemory ve span ile unsafe kodu küçük tutmak.

7 Kas 2026 7 dk 15
C#'ta ref return, ref local, in Parametreleri ve ref struct
Backend SERİ 09

C#'ta ref return, ref local, in Parametreleri ve ref struct

Değeri kopyalamak yerine referansıyla taşımak: ref local, ref return, ref readonly, in parametrelerinde defensive copy tuzağı, readonly struct ve kendi ref struct tipini yazmak.

7 Kas 2026 10 dk 13
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 17
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 11
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 12
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 15
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 14
Blog Haritası